您的位置:首页 > 编程语言 > Java开发

BigDecimal做除法运算报java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent

2017-02-08 11:45 711 查看
今天在使用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

解决方案:

BigDecimal weightValue = new BigDecimal(1000).multiply(new BigDecimal(11)).divide(new BigDecimal(2),2,RoundingMode.HALF_UP); RoundingMode.HALF_UP
可以省略

此就是给divide方法设置精确的小数点,如:divide(xxxxx,2)。

附:

BigDecimal枚举常量用法摘要  :

CEILING 
 向正无限大方向舍入的舍入模式
DOWN
向零方向舍入的舍入模式
DOWN        
向零方向舍入的舍入模式
FLOOR
向负无限大方向舍入的舍入模式
HALF_DOWN
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入
HALF_EVEN 
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入
HALF_UP
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入
UNNECESSARY 
用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入
UP 
远离零方向舍入的舍入模式

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐