在En-US語言環境中,我有一個小數值14780,德文的預期輸出是14.780。但是尾隨零並沒有取得。十進制轉換本地化(德語)
Decimal.Parse(的String.Format( 「{0:N0}」,14780),System.Globalization.CultureInfo.InvariantCulture)
觀察輸出:14.78
在En-US語言環境中,我有一個小數值14780,德文的預期輸出是14.780。但是尾隨零並沒有取得。十進制轉換本地化(德語)
Decimal.Parse(的String.Format( 「{0:N0}」,14780),System.Globalization.CultureInfo.InvariantCulture)
觀察輸出:14.78
German
(de-DE
)。解析並轉換爲字符串時,通常通過在Parse/TryParse
和Format
方法中指定區域性使用相同的區域性。對一個人使用英語(不變)而對另一個使用德語會導致意想不到的結果,因爲小數和逗號在文化之間具有相反的含義。永遠不要假設該線程提供的文化,除非你知道該文化是什麼,它不能改變。代碼示例:
var value = 14780M;
var strValue = string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:n0}", value)
// strValue is equal to "14.780"
這裏是你的代碼,上面顯示,它使用相同的文化,但休息時,當你混合文化的作品。
// OK - using InvariantCulture for both
var culture = System.Globalization.CultureInfo.InvariantCulture;
Console.WriteLine(Decimal.Parse(string.Format(culture, "{0:n0}", 14780), culture));
// OK - using de-DE for both
culture = System.Globalization.CultureInfo.GetCultureInfo("de-DE");
Console.WriteLine(Decimal.Parse(string.Format(culture, "{0:n0}", 14780), culture));
// FAIL - mixing de-DE and InvariantCulture
culture = System.Globalization.CultureInfo.GetCultureInfo("de-DE");
Console.WriteLine(Decimal.Parse(string.Format(culture, "{0:n0}", 14780), System.Globalization.CultureInfo.InvariantCulture));
decimal
類型不存儲數千分隔符。但是,在將小數轉換爲字符串時,可以重新構造它們。
decimal deci = Decimal.Parse(string.Format("{0:n0}", 14780), System.Globalization.CultureInfo.InvariantCulture); // 14780
string str = string.Format("{0:n0}", deci); // 14.780
.NET String.Format() to add commas in thousands place for a number。