在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。