我有一个名为double
的{{1}}变量,其值为totalCost
。
调用简单1025
的结果如下:
string.Format
我的千位分隔符是点,小数点分隔符是昏迷。
奇怪的部分如下:
?string.Format("{0}",totalCost)
"1,025"
它不应该是?string.Format("{0:0.0}",totalCost)
"1,0"
(或1025.0
)吗?
它似乎转换字符串中的double(给出“1.025”),然后在不使用我的分隔符设置(将其解释为1和25千分之一)的情况下重新解析它,最后它格式化转换后的值。
编辑:主题文化是:
1,025.0
答案 0 :(得分:4)
你的情景不是你想象的那样。我100%确定你totalCost
的真实值实际上是1.025
(千分之二千分之二),因为这是唯一能产生与你给出的结果相同的值。
可以通过以下代码看到:
double d = 1.025;
Console.WriteLine(string.Format(new System.Globalization.CultureInfo("it-IT"), "{0}",d));
//1,025
Console.WriteLine(string.Format(new System.Globalization.CultureInfo("it-IT"), "{0:0.0}",d));
//1,0
如您所见,两个输出都与您的输出匹配。我建议您使用调试器逐步执行代码,并查看值的更改位置。 (也许你沿着这条线的某个地方除以1000)
直接回答:没有奇怪的行为,代码完全符合预期。