我有接受数字的文本框。这些数字将保存在数据库中。 当我输入2,35之类的数字并转换为float并发送到数据库时,我收到错误,因为数据库只接受带点的数字,例如2.35
float num = float.Parse(textBox1.Text);
num仍为2,25
如何管理?我试过CultureInfo.InvariantCulture
,但我从来没有得到我想要的东西
答案 0 :(得分:2)
您可以尝试以下操作:
float.Parse(textBox1.Text.Trim(), CultureInfo.InvariantCulture.NumberFormat);
我希望这会解决问题。
答案 1 :(得分:1)
最简单的方法是将','替换为'。'在:像:
float num = float.Parse(textBox1.Text);
string stringValue = num.ToString().Replace(',', '.');
然后将“stringValue”发送到数据库。
我希望能帮助你。
答案 2 :(得分:1)
使用它:
CultureInfo.CreateSpecificCulture("en-US");
我当时遇到同样的问题,它通过上面的代码解决了
答案 3 :(得分:1)
num
是2,25
,因为它已在您的文化中向您展示。只要您使用常用机制(即带参数的预处理语句),它将被正确传递到数据库。如果您坚持手动粘贴SQL,那么请务必使用InvariantCulture
格式化数字,但一般情况下请不要。
答案 4 :(得分:1)
这是一个普遍的全球化问题。您必须定义的是用于存储数据本身的单一文化,因为您将其存储为字符串值。然后,使用该文化进行所有数据输入和处理。在我们的代码中,为了处理多文化数学和数据显示,我们有几个与此类似的块:
//save current culture and set to english
CultureInfo current = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
//Do Math and Data things
//restore original culture
System.Threading.Thread.CurrentThread.CurrentCulture = current;
通过这种方式,您可以确保以相同的方式处理和存储所有数据,无论用于生成或显示数据的文化。
修改强>
要进行数据保存,并将数字转换为字符串,您可以采用完全相同的方式。虽然您将当前线程CultureInfo设置为“en-US”,但所有数字中的.ToString()
方法将使用“。”。小数点代替“,”。另一种方法是在调用.ToString()时指定格式提供程序。
decimalNumber.ToString(new CultureInfo("en-US"));
这指定当您将数字转换为字符串时,请使用提供的文化中的NumberFormat。