在工作中,我需要比較一系列數據,一方數據精度為兩位小數,而另一方精度為三位小數。我需要將三位小數四舍五入成兩為小數后進行比較。
在操作的過程中,問題出現了,明明應該相等的數據卻走了不等的分支。
什么原因導致呢?
一開始我使用的是A == B 這種方法計算的,而浮點數在比較兩個數的時候用這種方法是不精確的,所以導致出錯。
后來我便使用了 A - B > 0.009這種方法。然而,令人失望的是問題還是沒有解決。
那么,問題究竟出在哪里呢?
原來,在四舍五入的時候。MATH.ROUND(b,2)方法,出現了問題。0.245會計算成0.24,如此一來便出錯了。
那么怎么解決呢?
Math.Round(b, 2, MidpointRounding.AwayFromZero)加了一個MidpointRounding.AwayFromZero參數,問題便得到了解決。
轉載于:https://www.cnblogs.com/ddwy/archive/2012/02/14/2350351.html