我的代码中有如下所示的行:
string buffer = string.Format(CultureInfo.InvariantCulture, "{0:N4}", 1008.0);
为什么buffer
在执行此行后会包含1,008.0
(注意逗号)?
是的,我猜它是由我的区域设置引起的。问题是为什么它们会影响这种情况下的结果呢?
编辑:
好的,我明白这完全是我的错。好像我应该使用F format specifier。
答案 0 :(得分:5)
InvariantCulture
基于en-US
,它使用,
作为千位(组)分隔符。
你的结果是我所期待的。
我还要指出N
numeric format specifier的详细信息:
数字(" N")格式说明符将数字转换为格式为#34; -d,ddd,ddd.ddd ..."的字符串,其中" - "如果需要,表示负数符号," d"表示数字(0-9),","表示一个组分隔符,"。"表示小数点符号。
答案 1 :(得分:2)
您正在使用不变文化;你的文化与此无关。为此,N4格式意味着
-d,ddd,ddd,ddd...
也就是说,可能在数千组之间引导负号指示符和逗号。有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/dwhawy9k#NFormatString
你可以看看
NegativeSign
NumberNegativePattern
NumberGroupSizes
NumberGroupSeparator
NumberDecimalSeparator
NumberDecimalDigits
为不变的文化。如果你这样做,你会看到:
-
1
{ 3 }
,
.
2
答案 2 :(得分:1)
由于“{0:N4}”
,您收到逗号n -----数字逗号数字----- {0:n}
Source:
即使没有指定InvariantCulture
,您也会收到逗号Console.WriteLine(string.Format("{0:n4}", 1008.0));