2017-01-23 126 views
0

我开发了winform应用程序,我需要帮助解决这个问题。当我插入到textBoxt值为33.5,然后保存我的文本框双变量值在我的计划,但经过我的textBox转换翻一番,在变量值是335不是33.5,这是我的代码将小数从文本框转换为小数点后两位的变量

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()); 
     } 
    } 

任何解决方案?

+0

http://stackoverflow.com/ questions/1354924/how-do-i-parse-a-string-with-a-point-to-a-double –

回答

1

这可能是您当前的文化和NumberDecimalSeparator问题。

尝试使用InvariantCulture的解析:

float coba = float.Parse(txtmat.Text, CultureInfo.InvariantCulture); 

一个非常类似的问题可以在C# float.Parse String

+0

thx bro,for me –

1

这可能是因为在你的区域发现,点不是小数点分隔符。

尝试将其设置为固定区域性:

 float coba = float.Parse(txtmat.Text, CultureInfo.InvariantCulture); 
+0

thx for help bro –

1

看来你有格式问题;作为体表示一种分离的事实上,浮点(floatdoubledecimal):和小数的:

123.456.789,12 
^^^
    | | decimal separator 
    | | 
    thousand separators  
解析时

,分离只是ingnored因此你完全可以有两种不同结果:

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) 

这些分离器是培养依赖(例如, en-US用途,为一千.为十进制时ru-RU对待他们完全相反的方式:.000和,十进制),这是在解析时,为什么我建议使用CultureInfo.InvariantCulture

float coba = float.Parse(txtmat.Text, CultureInfo.InvariantCulture);