我不明白为什么它会像这样
a = "1,00"
IFormatProvider numberlanguagestyle = CultureInfo.CreateSpecificCulture("en-US");
pricetopay = (int)decimal.Parse(a, numberlanguagestyle);
Console.writeline(pricetopay)
此输出 100
,而
a = "1"
IFormatProvider numberlanguagestyle = CultureInfo.CreateSpecificCulture("en-US");
pricetopay = (int)decimal.Parse(a, numberlanguagestyle);
Console.writeline(pricetopay)
输出 1
现在这在我的vs2010版本中运行良好,但我们有不同的程序员使用不同的语言,我们讨论了舍入错误和类似的东西 虽然上面的代码在我们的应用程序中工作正常,但我想知道它为什么会这样。
答案 0 :(得分:4)
这是因为,
用作数字组分隔符,而不是小数点。通常情况下,您可以使用它来分组数千,例如1,000,000
一百万。在en-US
文化中,您需要使用.
作为小数点。
答案 1 :(得分:3)
在en-US
文化中,逗号是千位分隔符,因此它基本上被忽略了。因此,"1,00"
会以"100"
的形式插入,即100。
答案 2 :(得分:2)
我可能误解了你的问题(因为我看不出它与舍入有什么关系),但在美国,小数点分隔符是"."
,而不是","
,所以解析器是(正确地)将1,00
解释为100.