c# 十进制到货币字符串

本文关键字:字符串 货币 十进制 | 更新日期: 2023-09-27 18:33:01

要显示货币,我们这样做:

ToString("0.##")

对于值5.00,输出为:

5

对于值5.98,输出为:

5.98

对于值5.90,输出为:

5.9

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

5.90

如何在不影响其他结果的情况下执行此操作?

c# 十进制到货币字符串

尝试:

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

或者只是:

value.ToString("C")

我知道没有内置的方法可以在两个小数位都不为零时才扩展所有两个小数位。可能只会为此使用if语句。

if (s.EndsWith(".00"))
    s = s.Substring(0, s.Length - 3);
我知道

这不会为您提供解决问题的格式,但这是一个解决该问题的简单解决方案。

(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")
}

> # 表示如果没有数字,则将其留空 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