这几天公司做一个项目,发现了一个问题,大家也许也碰到过,后来上网也查了一下,现在整理出来供大家参考:
我在做保留小数位时发现如下问题:
Math.Round(573.165,2) =573.16   而不是573.17


经过反复测试发现如下规律:
以上边的为例:
573.165我要保留两位小数位,计算机并不是四舍五入,而是这样来保存的
.165保留两位小数位,如果<=4则就是573.16,如果>5则进位即573.17,而当等于5的时候,要看你保留的最后一位数了,也就是我这里的6,这个数如果是奇数则进一,如果是偶数则保持不变。那么也就是:
Math.Round(573.175,2) =573.18 ;
Math.Round(573.1650000000000001,2) =573.17;
Math.Round(573.165,2) =573.16 ;


对了还在网上看到一个例子,从统计学的角度分析,这样的计算,数据更准确。

例如:1.15+1.25+1.35+1.45=5.2,若按四舍五入取一位小数计算
1.2+1.3+1.4+1.5=5.4
按"四舍六入五成双"计算,1.2+1.2+1.4+1.4=5.2,舍入后的结果更能反映实际结果