當(dāng)前位置:
首頁 >
java数值运算后精度丢失问题
發(fā)布時間:2025/7/14
40
豆豆
生活随笔
收集整理的這篇文章主要介紹了
java数值运算后精度丢失问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近連續(xù)倆次遇到運(yùn)算后數(shù)值精度丟失問題,所以記錄一下。
問題1:java計(jì)算百分比,應(yīng)該得到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 ;這段代碼的計(jì)算都是用BigDecimal運(yùn)算的,這沒什么問題。可惜啊!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頁面中對金額計(jì)算,0.00元竟然還帶個負(fù)號
?
?在java中測試
?
double浮點(diǎn)型,計(jì)算結(jié)果確實(shí)不是0,而是一個近似0的負(fù)數(shù)。
解決方案:
(由于我后臺返回的數(shù)據(jù)都是保留小數(shù)點(diǎn)后兩位,所以對運(yùn)算數(shù)字先升級運(yùn)算,再對結(jié)果降級處理)
累計(jì)其他 :{{$itzUtils.thousands(((dczqt*100-dczdcz*100)/100).toFixed(2))}}元</span>?
轉(zhuǎn)載于:https://www.cnblogs.com/caoyajun33-blog/p/8029299.html
總結(jié)
以上是生活随笔為你收集整理的java数值运算后精度丢失问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: winsock 错误
- 下一篇: jQuery——stop