zoukankan      html  css  js  c++  java
  • java.lang.ArithmeticException: Non-terminating decimal expansion

    如有需要可以加我Q群【308742428】大家一起讨论技术。

    后面会不定时为大家更新文章,敬请期待。

    喜欢的朋友可以关注下。

    今天在写一些逻辑处理的时候,报了一个错误信息

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

    原始代码:

    BigDecimal price = (bigprice.divide(bigdprice)).multiply(new BigDecimal(100));
    

    原因是JAVA中用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常。

    修改后的代码:

    BigDecimal price = (bigprice.divide(bigdprice, 2, BigDecimal.ROUND_HALF_UP)).multiply(new BigDecimal(100));
    

    注意这个divide方法有两个重载的方法,一个是传两个参数的,一个是传三个参数的:

    两个参数的方法:

    @param divisor value by which this {@code BigDecimal} is to be divided. 传入除数

    @param roundingMode rounding mode to apply. 传入round的模式

    三个参数的方法:

    @param divisor value by which this {@code BigDecimal} is to be divided. 传入除数
    @param scale scale of the {@code BigDecimal} quotient to be returned. 传入精度
    @param roundingMode rounding mode to apply. 传入round的模式

      

      

      

  • 相关阅读:
    求有序数组中不重复数字的出现次数
    ThreadLocal在Spring事务管理中的应用
    spring声明式的事务管理
    bootstrap-table 下一页点击失效
    IE浏览器下ajax和缓存的那些事儿
    vue学习第二步——目录结构
    vue学习第一步——自动化构建项目
    bootstrap-select 默认搜索
    webuploader的一些坑
    easyUI combobox 添加空白项
  • 原文地址:https://www.cnblogs.com/dsn727455218/p/12157493.html
Copyright © 2011-2022 走看看