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

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


当前回答

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

其他回答

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

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

这是我会使用的:

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

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

decimalVar.ToString("F");

这将:

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

非常适合显示货币。

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

最适用的解决方案是

decimalVar.ToString("#.##");

如果您希望使用逗号和小数点(但不使用货币符号)格式化,例如3456789.12。。。

decimalVar.ToString("n2");
        var arr = new List<int>() { -4, 3, -9, 0, 4, 1 };
        decimal result1 = arr.Where(p => p > 0).Count();
        var responseResult1 = result1 / arr.Count();
        decimal result2 = arr.Where(p => p < 0).Count();
        var responseResult2 = result2 / arr.Count();
        decimal result3 = arr.Where(p => p == 0).Count();
        var responseResult3 = result3 / arr.Count();
        Console.WriteLine(String.Format("{0:#,0.000}", responseResult1));
        Console.WriteLine(String.Format("{0:#,0.0000}", responseResult2));
        Console.WriteLine(String.Format("{0:#,0.00000}", responseResult3));

你可以放任意多的0。