我喜歡在我的代碼如下一行:執行該行後爲什麼string.Format產生這樣的結果?
string buffer = string.Format(CultureInfo.InvariantCulture, "{0:N4}", 1008.0);
爲什麼buffer
包含1,008.0
(注意逗號)?
是的,我猜這是由我的區域設置引起的。問題是爲什麼他們在這種情況下影響結果?
編輯:
好的,我明白這完全是我的錯。這似乎應該使用F format specifier。
我喜歡在我的代碼如下一行:執行該行後爲什麼string.Format產生這樣的結果?
string buffer = string.Format(CultureInfo.InvariantCulture, "{0:N4}", 1008.0);
爲什麼buffer
包含1,008.0
(注意逗號)?
是的,我猜這是由我的區域設置引起的。問題是爲什麼他們在這種情況下影響結果?
編輯:
好的,我明白這完全是我的錯。這似乎應該使用F format specifier。
InvariantCulture
鬆散地基於en-US
,其使用,
作爲數千(組)分隔符。
你的結果是我所期望的。
我也點你到N
numeric format specifier的細節:
數字(「N」)格式說明符將數字轉換爲以下形式的字符串「-d,國內長途,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}」
ň-----用逗號千數--- - {0:N}
Source:
你會得到逗號,即使沒有指定InvariantCulture的
Console.WriteLine(string.Format("{0:n4}", 1008.0));
您的區域設置是什麼......? – gdoron
@gdoron俄羅斯(俄羅斯) – Bobrovsky
@gdoron ok,是不是CultureInfo.InvariantCulture應該重寫這個? – Bobrovsky