java数值运算后精度丢失问题
生活随笔
收集整理的這篇文章主要介紹了
java数值运算后精度丢失问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近連續倆次遇到運算后數值精度丟失問題,所以記錄一下。
問題1:java計算百分比,應該得到57,可返回的就是56
在java代碼中
BigDecimal progress;BigDecimal a = new BigDecimal(POF);BigDecimal b = new BigDecimal(RF);if(b.compareTo(a)==1&&b.subtract(a).longValue()<1000000){return 100;}progress = a.divide(b,2,BigDecimal.ROUND_UP);return progress*100 ;這段代碼的計算都是用BigDecimal運算的,這沒什么問題??上О?#xff01;return progress*100 ; 功虧一簣!
?
BigDecimal progress;BigDecimal a = new BigDecimal(POF);BigDecimal b = new BigDecimal(RF);if(b.compareTo(a)==1&&b.subtract(a).longValue()<1000000){return 100;}progress = a.divide(b,2,BigDecimal.ROUND_UP); BigDecimal multiply = progress.multiply(new BigDecimal(100));return multiply.intValue();?
問題二:??? 在jsp頁面中對金額計算,0.00元竟然還帶個負號
?
?在java中測試
?
double浮點型,計算結果確實不是0,而是一個近似0的負數。
解決方案:
(由于我后臺返回的數據都是保留小數點后兩位,所以對運算數字先升級運算,再對結果降級處理)
累計其他 :{{$itzUtils.thousands(((dczqt*100-dczdcz*100)/100).toFixed(2))}}元</span>?
轉載于:https://www.cnblogs.com/caoyajun33-blog/p/8029299.html
總結
以上是生活随笔為你收集整理的java数值运算后精度丢失问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: winsock 错误
- 下一篇: jQuery——stop