Math.Round的疑惑
Math.Round(new decimal(34.965), 2);输出:34.96
Math.Round(34.965, 2);输出:34.97
为什么输出结果不一样!
------解决方案--------------------这个跟double.Round的具体实现有关。
Math.Round(34.965, 2)在内部计算的时候,先乘与100,然后再四舍五入。
但是由于浮点误差,34.965 * 100 得到的是3496.5000000000005。略大于0.5,于是向上取整。
而decimal是用整数来表现的。比如34965,3(其中3表示几个小数)可以用来表示34.965。
这种情况,就没有必要再乘100了,直接调整小数位然后取整,结果就是.Net默认的向偶数取整。