4

我有接受数字的文本框。这些数字将保存在数据库中。当我输入像 2,35 这样的数字并转换为浮点数并发送到数据库时出现错误,因为数据库只接受带点的数字,例如 2.35

float num = float.Parse(textBox1.Text);

num 仍然是 2,25

如何管理?我试过了,CultureInfo.InvariantCulture但我从来没有得到我想要的

4

5 回答 5

2

您可以尝试以下方法:

float.Parse(textBox1.Text.Trim(), CultureInfo.InvariantCulture.NumberFormat);

我希望这可以解决问题。

于 2015-06-30T06:41:02.407 回答
1

用这个:

CultureInfo.CreateSpecificCulture("en-US");

我当时有同样的问题,它通过上面的代码解决了

于 2013-04-04T13:15:36.057 回答
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。

于 2013-04-08T18:49:32.050 回答
1

num2,25因为它在你的文化中向你展示。如果您使用通常的机制(即带参数的预准备语句),它将正确地传递给数据库。如果你坚持手动将 SQL 粘合在一起,那么一定要使用InvariantCulture格式化数字,但一般情况下,请不要。

于 2013-04-04T13:19:38.080 回答
1

最简单的方法是将 ',' 替换为 '.' 就像:

float num = float.Parse(textBox1.Text);
string stringValue = num.ToString().Replace(',', '.');

然后将“stringValue”发送到数据库。

我希望这对你有帮助。

于 2013-04-04T13:08:48.230 回答