将字符串转换为十进制忽略点

时间:2012-09-13 08:31:24

标签: c# decimal dataformat

今天iv注意到我使用小数第一件事的所有地方都在网格中显示逗号而不是点 第二个问题是当我用点编辑或插入数字时它忽略了点

就像我输入“2.5”我得到它25岁

那就像示例代码:

decimal a = Convert.ToDecimal("2.5");

a的重生是25。

这个问题发生在iis上,也发生在我的本地机器上。

它遍布整个地方,我该如何解决?

2 个答案:

答案 0 :(得分:3)

您目前的文化是什么?这应该做的工作:

decimal a = Convert.ToDecimal("2.5", new CultureInfo("en-US"));

另外,对于逗号显示:

string s = a.ToString(new CultureInfo("en-US"));

答案 1 :(得分:1)

您可以通过更改默认文化或在转化调用(a)中强制使用特定文化来修复此问题。

我们精彩但有点令人不安的欧洲表兄弟在过去的某个时刻得到了小数点和逗号混淆,所以三十五千七百二十五写成: / p>

35.007,25

所以几乎可以肯定的是,您的文化设置会丢弃数千个分隔符(无论它们在哪里),以便“2.5” 25。这意味着一个像二和二的数字-half-thousand(2,500)几乎肯定会变成两岁半。


(a):事实上,你可能不应该在转换调用中强制使用特定的文化,因为文化的重点是适应人们的需求。欧洲人认为美国人已经没有给出他们更多的原因了:[)>你所看到的是完全应该发生什么。

如果您需要特定的文化,请按照这种方式配置您的计算机,并让您的代码使用默认值。