我有十进制货币金额(从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”级联到小数位?
答案 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代替你的'级联'四舍五入