記一個java 精度計算很坑的問題

例如 0.29*94.00000000
網上說 用BigDecimal 然後我用了
BigDecimal(d1).multiply(BigDecimal(d2)).setScale(decimalPoint, BigDecimal.ROUND_DOWN)
.toPlainString()
計算結果 27.25999999 我是精確 8位的
這樣 的結果很坑 因爲實際結果是 27.26000000
後來 找了 半天 遇到一種寫法

 System.out.println("aa======"+ BigDecimal(0.29.toString()).multiply(BigDecimal(94.00000000.toString())).setScale(8, BigDecimal.ROUND_DOWN))
    2020-07-07 18:34:11.016 10387-10387/com.mochain.bqmex.debug I/System.out: aa======27.26000000
通過字符串的方式 傳入BigDecimal似乎解決了問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章