繁体   English   中英

c#字符串格式问题

[英]c# string format issue for money

我需要将字符串转换为{###}的货币格式。###。###,##

那是

值5461497702600

会成为

54.614.977.026,00

数字变得过大。

我在用

return string.Format("{0:#" + (val < 1000 ? "" : "\\.") + "##0.00}", val);

该示例返回

54614977.026,00

(只有一个点)

任何帮助,将不胜感激

它比您想像的要简单,只需使用:

   decimal number = 5461497702600M;
   string s = string.Format("{0:#,##0.00}", number );

在此必须使用decimal #,## 0.00图片是执行此操作的非常标准的方法,输出将使用系统默认符号,并且fromatter很聪明,可以根据需要重复3位分组。 使用以下重载指定区域性,带有InvariantCulture的示例将始终使用小数点:

 string s = string.Format(System.Globalization.CultureInfo.InvariantCulture, 
      "{0:#,##0.00}", number);

您可以使用带格式字符串IFormatProviderToString重载

然后,只需将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"));

我认为您要尝试执行的操作取决于计算机的当前文化/区域设置。 在您的情况下,您尝试将COMMA用作小数,将十进制用作COMMA,即千位分隔符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM