记一个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似乎解决了问题
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章