我需要将字符串转换为货币格式{###}。###。###,##
即
值5461497702600
会变成
54.614.977.026,00
数字变得过大。
我正在使用
return string.Format("{0:#" + (val < 1000 ? "" : "\\.") + "##0.00}", val);
返回示例
54614977.026,00
(只有一个点)
任何帮助将不胜感激
答案 0 :(得分:4)
这比你想象的要简单,只需使用:
decimal number = 5461497702600M;
string s = string.Format("{0:#,##0.00}", number );
在此处使用decimal
至关重要。 #,## 0.00图片是一种非常标准的方式,输出将使用系统默认符号,而且格式足够聪明,可以根据需要重复3位数分组。使用以下重载来指定Culture,此示例与InvariantCulture将始终使用小数点:
string s = string.Format(System.Globalization.CultureInfo.InvariantCulture,
"{0:#,##0.00}", number);
答案 1 :(得分:1)
您可以使用ToString
overload和IFormatProvider
的{{3}}。
然后只需使用N2
作为格式字符串,并使用CultureInfo
- 例如de-DE
- .
作为组分隔符和,
作为小数符号:
return (val / 100).ToString("N2", new CultureInfo("de-DE"));
请注意,如果val
是整数类型而不是浮点类型,则除以100将丢失两个最低有效数字。为避免这种情况,您可以在分割时将整数值转换为decimal
:
return (val / 100M).ToString("N2", new CultureInfo("de-DE"));
答案 2 :(得分:0)
我认为您要做的事情取决于您机器当前的文化/区域设置。在您的情况下,您尝试使用COMMA作为十进制,小数作为COMMA,千位分隔符