奇怪的string.Format行为

时间:2013-09-27 10:23:17

标签: c# string.format

我有一个名为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

1 个答案:

答案 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)

直接回答:没有奇怪的行为,代码完全符合预期。