22

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

ToString("0.##")

对于价值5.00,输出是:

5

对于价值5.98,输出是:

5.98

对于价值5.90,输出是:

5.9

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

5.90

我怎样才能做到这一点而不影响其他结果?

4

6 回答 6

25

尝试:

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

要不就:

value.ToString("C")

我知道只有当两者都不为零时,才能扩展所有小数点后两位的内置方法。可能会为此使用一个if声明。

if (s.EndsWith(".00"))
    s = s.Substring(0, s.Length - 3);
于 2012-05-03T18:41:26.317 回答
18

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

(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
于 2012-05-03T18:52:56.030 回答
11

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

public static string ToCurrencyString(this decimal d)
{
    decimal t = Decimal.Truncate(d);
    return d.Equals(t) ? d.ToString("0.##") : d.ToString("#, ##0.00")
}
于 2012-05-03T19:03:56.093 回答
10

#表示如果没有数字则留空 0 表示如果没有数字则输入 0

ToString("0.00")

于 2012-05-03T18:44:31.553 回答
1

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

decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
于 2015-03-17T18:22:05.640 回答
0

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

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

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

于 2015-08-12T08:01:47.487 回答