要显示我们执行的货币:
ToString("0.##")
对于值5.00
,输出为:
5
对于值5.98
,输出为:
5.98
对于值5.90
,输出为:
5.9
我需要第三种情况才能得出2个小数点,例如:
5.90
如果不影响其他结果,我怎么能这样做?
答案 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设置定义。