c#十进制为货币字符串

时间:2012-05-03 18:39:05

标签: c# decimal currency tostring

要显示我们执行的货币:

ToString("0.##")

对于值5.00,输出为:

5

对于值5.98,输出为:

5.98

对于值5.90,输出为:

5.9

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

5.90

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

6 个答案:

答案 0 :(得分:17)

我知道这并没有为您提供解决问题的格式,但它是解决问题的简单解决方案。

(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

答案 1 :(得分:15)

尝试:

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);

答案 2 :(得分:11)

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

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

答案 3 :(得分:8)

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

  

的ToString( “0.00”)

答案 4 :(得分:1)

不确定我是否遗漏了某些内容,但你不能这样做:

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

答案 5 :(得分:-1)

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

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

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