1. 程式人生 > >Non-terminating decimal expansion; no exact representable decimal result.

Non-terminating decimal expansion; no exact representable decimal result.

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