为了显示货币,我们要做的是:
ToString("0.##")
当值为 5.00
时,输出结果为:
5
对于值5.98
,输出结果为:
5.98
当值为5.90
时,输出为:
5.9
我需要第三种情况输出为带有两位小数的数字,例如:
5.90
如何在不影响其他结果的情况下完成这个操作?
请尝试:
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
5.00m
这样的格式吗? - Sebastianpublic 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")
将数字转换为字符串,并且保留两位小数。如果小数点后面不足两位,用 0 来填充。
我不确定是否有遗漏,但是你不能只是这样做吗:
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
只需使用 myDecimal.ToString("N")
使用"N"参数将十进制数转换为字符串,并且要显示的小数位数将由您的操作系统设置定义。
value.ToString("c")
? - Steve DannersomeDecimal.ToString("c", new CultureInfo("en-US"))
?这样也会应用货币符号。 - TejsIFormatProvider
。 - Jacobnew CultureInfo("en-US")
的作用。试试使用new CultureInfo("en-GB")
或者new CultureInfo("fr-FR")
。 - Justin Morgan