Non-terminating decimal expansion; no exact representable decimal result.
阿新 • • 發佈:2019-01-10
Non-terminating decimal expansion; no exact representable decimal result. 翻譯為:非終止十進位制擴充套件; 沒有確切的可表示的小數結果;
翻譯為人話就是說:BigDecimal是為高精度計算而設計的,而你的值是沒有精確結果的;
舉例:
BigDecimal b1=new BigDecimal(1.0);
BigDecimal b2=new BigDecimal(3.0);
BigDecimal c=b1.divide(b2);
1.0/3.0是除不盡的,所以丟擲異常
解決方案:使用BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;
BigDecimal b1=new BigDecimal(1.0);
BigDecimal b2=new BigDecimal(3.0);
BigDecimal c=b1.divide(b2,3,RoundingMode.HALF_UP);
其中 scale 為保留的小數位;RoundingMode roundingMode 為取捨模式(如:RoundingMode.HALF_UP 四捨五入);
RoundingMode具有哪些模式請參照我的另一篇部落格:https://www.cnblogs.com/minxl/p/10247770.html