当显示当前使用.ToString()的十进制值时,它精确到15位小数,因为我使用它来表示美元和美分,所以我只希望输出为2位小数。

我是否为此使用.ToString()的变体?


当前回答

Double Amount = 0;
string amount;
amount=string.Format("{0:F2}", Decimal.Parse(Amount.ToString()));

其他回答

我知道这是一个古老的问题,但我惊讶地发现似乎没有人发布这样的答案;

没有使用银行家舍入将值保留为小数。

这是我会使用的:

decimal.Round(yourValue, 2, MidpointRounding.AwayFromZero);

http://msdn.microsoft.com/en-us/library/9s0xa85y.aspx

所有这些都没有达到我所需要的效果,即强制2 d.p.并舍入为0.005-0.01

强制2 d.p.需要将精度提高2 d.p.,以确保至少有2 d.p。

然后四舍五入,以确保我们的d.p不超过2。

Math.Round(exactResult * 1.00m, 2, MidpointRounding.AwayFromZero)

6.665m.ToString() -> "6.67"

6.6m.ToString() -> "6.60"

数学舍入方法(十进制,Int32)

decimalVar.ToString("F");

这将:

舍入到小数点后2位,例如23.456→ 23.46确保总是2位小数,例如23→ 23.00; 12.5→ 12.50

非常适合显示货币。

查看ToString(“F”)的文档(感谢Jon Schneider)。

如果您只是需要显示,请使用string.Format

String.Format("{0:0.00}", 123.4567m);      // "123.46"

http://www.csharp-examples.net/string-format-double/

“m”是十进制后缀。关于十进制后缀:

http://msdn.microsoft.com/en-us/library/364x0z75.aspx