为什么是字符串.格式产生这样的结果
本文关键字:结果 字符串 格式 为什么 | 更新日期: 2023-09-27 18:33:58
我的代码中有一行如下:
string buffer = string.Format(CultureInfo.InvariantCulture, "{0:N4}", 1008.0);
为什么buffer
在执行此行后包含1,008.0
(注意逗号)?
是的,我确实猜这是由我的区域设置引起的。问题是为什么在这种情况下它们会影响结果?
编辑:
好吧,我知道这完全是我的错。似乎我应该使用 F 格式说明符。
InvariantCulture
松散地基于 en-US
使用 ,
作为千(组)分隔符。
你的结果是我所期望的。
我还指出N
数字格式说明符的详细信息:
数字 ("N") 格式说明符将数字转换为格式为"-d,ddd,ddd.ddd..."的字符串,其中"-"表示负数符号(如果需要),"d"表示数字 (0-9),","表示组分隔符,"." 表示小数点符号。
您使用的是固定区域性;您的区域性与此无关。为此,N4 格式意味着
-d,ddd,ddd,ddd...
也就是说,数千组之间可能存在的前导负号指示器和逗号。有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/dwhawy9k#NFormatString
你可以看看
NegativeSign
NumberNegativePattern
NumberGroupSizes
NumberGroupSeparator
NumberDecimalSeparator
NumberDecimalDigits
对于固定区域性。如果这样做,您将看到:
-
1
{ 3 }
,
.
2
由于"{0:N4}"而获得逗号
n----- 带逗号的数字表示千----- {0:n}
源:
即使不指定不变文化,您也会得到逗号
Console.WriteLine(string.Format("{0:n4}", 1008.0));