在工作中,我需要比较一系列数据,一方数据精度为两位小数,而另一方精度为三位小数。我需要将三位小数四舍五入成两为小数后进行比较。
在操作的过程中,问题出现了,明明应该相等的数据却走了不等的分支。
什么原因导致呢?
一开始我使用的是A == B 这种方法计算的,而浮点数在比较两个数的时候用这种方法是不精确的,所以导致出错。
后来我便使用了 A - B > 0.009这种方法。然而,令人失望的是问题还是没有解决。
那么,问题究竟出在哪里呢?
原来,在四舍五入的时候。MATH.ROUND(b,2)方法,出现了问题。0.245会计算成0.24,如此一来便出错了。
那么怎么解决呢?
Math.Round(b, 2, MidpointRounding.AwayFromZero)加了一个MidpointRounding.AwayFromZero参数,问题便得到了解决。

posted on 2012-02-14 09:11  点滴汪洋  阅读(429)  评论(0编辑  收藏  举报