首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Math.Round的纳闷

2013-04-20 
Math.Round的疑惑 Math.Round(new decimal(34.965), 2)输出:34.96 Math.Round(34.965, 2)输出:34.97为什

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默认的向偶数取整。

热点排行