如何将货币(小数)舍入为百万? (C#)

时间:2011-09-08 10:01:49

标签: c#

我有十进制货币金额(从SQl2k *表格为32,8)我想将它们四舍五入到小数位数2位。

系统将显示1000行,其中包含多个金额,我需要将各种类别的总计汇总为“快速查看”。

e.g。

123,456,789.12345678
goes to
123.46

6,655,443,332.2110099
goes to
6,655.44

我知道舍入和十进制/浮点数学存在问题:

45,454,454.454545
goes to
45.46 OR 45.45 ?

所以对任何最好使用的建议也非常感激。


另外两个例子(我想要的是什么......不是实际上在数学上正确的!)

555444444.444444 => 555.44
555444444.444445 => 555.45

我希望第二个例子的最后一个“5”级联到小数位?

3 个答案:

答案 0 :(得分:2)

decimal d = Math.Round(inValue/1000000m, 2);

答案 1 :(得分:0)

 double v = Math.Round(45454454.454545, 2);

将返回45454454.45

所以解决方案是:

 double factor = 1000000;
 double v1 = Math.Round(123456789.12345678 / factor, 2); //// 123.46  
 double v2 = Math.Round(6655443332.2110099 / factor, 2); //// to 6,655.44 

答案 2 :(得分:0)

恕我直言你应该使用Bankers Rounding代替你的'级联'四舍五入