专注JavaWeb开发 首页制式『默认式 OR 时间轴 网站地图|RSS订阅|设为首页|加入收藏
当前位置:首页 >Java >报错大杂烩 > 正文

BigDecimal做除法运算报java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.解决办法

作者: 紫寒1120 发布时间: 2015-05-26 浏览次数:

今天在使用两个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 
    远离零方向舍入的舍入模式



QQ群: 武汉地区(142173356)验证消息JavaWeb1024

网友共有【】评论,点击查看



x 微信关注我们 随时获取最新网站资讯