convert decimal from textbox to variable with 2 decimal point
本问题已经有最佳答案,请猛点这里访问。
我开发了WinForm应用程序,我需要这个问题的帮助。当我插入值为33.5的textbox时,我将文本框上的值保存到程序中的双变量,但在我的文本框转换为双变量后,变量中的值为335而不是33.5,这是我的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | private void btntambahMUN_Click(object sender, EventArgs e) { if (txtmat.Text =="") { errorProvider1.Clear(); errorProvider1.SetError(txtmat,"Masukkan Nilai Matematika"); } else if (txtipa.Text =="") { errorProvider1.Clear(); errorProvider1.SetError(txtipa,"Masukkan Nilai IPA"); } else if (txtips.Text =="") { errorProvider1.Clear(); errorProvider1.SetError(txtips,"Masukkan Nilai IPS"); } else if (txtbind.Text =="") { errorProvider1.Clear(); errorProvider1.SetError(txtbind,"Masukkan Nilai Bahasa Indonesia"); } else if (txtbing.Text =="") { errorProvider1.Clear(); errorProvider1.SetError(txtbing,"Masukkan Nilai Bahasa Inggris"); } else { /* try { con.Open(); MySqlCommand cmd = new MySqlCommand("INSERT INTO datanilaiujian(UserID,Matematika,IPA,IPS,BIND,BING) VALUES(@a,@b,@c,@d,@e,@f)", con); cmd.Parameters.AddWithValue("@a",txtuseridMUN.Text.Trim()); cmd.Parameters.AddWithValue("@b",txtmat.Text.Trim()); cmd.Parameters.AddWithValue("@c",txtipa.Text.Trim()); cmd.Parameters.AddWithValue("@d",txtips.Text.Trim()); cmd.Parameters.AddWithValue("@e",txtbind.Text.Trim()); cmd.Parameters.AddWithValue("@f",txtbing.Text.Trim()); cmd.ExecuteNonQuery(); con.Close(); updatestatusUN(); hitungrata(); refreshMUN(); showallgridview(); } catch (Exception ex) { con.Close(); RadMessageBox.Show(ex.Message.ToString()); }*/ float coba = float.Parse(txtmat.Text); RadMessageBox.Show(coba.ToString()); } } |
有什么解决办法吗?
您似乎有格式问题,实际上,浮点(
1 2 3 4 5 | 123.456.789,12 ^ ^ ^ | | decimal separator | | thousand separators |
解析时,千个分隔符只是一个规范,因此您可以有两种不同的结果:
1 2 | 33.5 -> 335 // if '.' is a thousand separator (e.g. in Russian, ru-RU culture) 33.5 -> 33.5 // if '.' is a decimal separator (e.g. in the US, en-US culture) |
。
这些分隔符依赖于文化(如
1 | float coba = float.Parse(txtmat.Text, CultureInfo.InvariantCulture); |
这可能是因为在您的区域设置中,点不是小数分隔符。
尝试将其设置为不变区域性:
1 | float coba = float.Parse(txtmat.Text, CultureInfo.InvariantCulture); |
号
这可能是当前区域性和数字小数分隔符的问题。
尝试使用不变区域性进行分析:
1 | float coba = float.Parse(txtmat.Text, CultureInfo.InvariantCulture); |
在C float.parse字符串中可以发现一个非常类似的问题。