具体报错信息如下:
java.lang.IllegalArgumentException: Invalid rounding mode
at java.math.BigDecimal.divide(BigDecimal.java:1558)
at java.math.BigDecimal.divide(BigDecimal.java:1622)
原因分析
定位到(BigDecimal.java:1622)的位置:
接着往下:
传入的参数roundingMode小于0或大于7就会报这个错误.
代码回顾
int precision =8;// 小数精度位数
BigDecimal divide = big5.divide(big3, precision);
原来是把精度位数传给了取整类型.而BigDecimal的取整类型为#ROUND_UP
#ROUND_DOWN
#ROUND_CEILING
#ROUND_FLOOR
#ROUND_HALF_UP
#ROUND_HALF_DOWN
#ROUND_HALF_EVEN
#ROUND_UNNECESSARY
范围是 0 - 7.
问题修复
int precision =8;
// 给定小数精度位数,四舍五入取整
BigDecimal divide = big5.divide(big3, precision,BigDecimal.ROUND_HALF_UP);
问题解决了: ) 特此记录,与君共勉