c#十进制为货币字符串

要显示我们所做的货币:

ToString("0.##") 

对于值5.00 ,输出为:

 5 

对于值5.98 ,输出为:

 5.98 

对于值5.90 ,输出为:

 5.9 

我需要第三种情况才能得到2个小数点,例如:

 5.90 

如果不影响其他结果我怎么能这样做?

我知道这不会给你一个解决问题的格式,但它是一个简单的解决方案来解决它。

 (5.00).ToString("0.00").Replace(".00",""); // returns 5 (5.90).ToString("0.00").Replace(".00", ""); // returns 5.90 (5.99).ToString("0.00").Replace(".00", ""); // returns 5.99 

您可以使用扩展方法,如下所示:

 public static string ToCurrencyString(this decimal d) { decimal t = Decimal.Truncate(d); return d.Equals(t) ? d.ToString("0.##") : d.ToString("#, ##0.00") } 

尝试:

 s.ToString("#,##0.00") 

要不就:

 s.ToString("C") 

我知道没有内置的方法来扩展所有两个小数位,只有当两者都不为零时。 可能只是使用if语句。

 int len = s.Length; if (s[len - 2] == '0' && s[len - 1] == '0') s = s.Left(len - 3); 

#表示如果没有数字则将其保留为空0表示如果没有数字则输入0

的ToString( “0.00”)

不确定我是否遗漏了什么,但你不能这样做:

 decimal moneyvalue = 1921.39m; string html = String.Format("Order Total: {0:C}", moneyvalue); Console.WriteLine(html); 

只需使用myDecimal.ToString("N")

使用“N”参数将十进制转换为字符串,并且要显示的小数位数将由您的SO设置定义。

https://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numberdecimaldigits(v=vs.110).aspx