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的模式

      

      

      

  • 相关阅读:
    LINQ Provider表达式树6
    asp.net Forms 验证No.3
    三种用户验证No.1 asp.net Forms
    LinQ表达式目录2
    将ASP.NET MVC 2.0 部署在IIS6和IIS7上
    LINQ Provider 表达式树 5
    asp.net Forms验证No.2
    LINQ表达式树4
    LINQ表达式树3
    绝对精华win8如何使用,玩转win8看完绝不后悔
  • 原文地址:https://www.cnblogs.com/dsn727455218/p/12157493.html
Copyright © 2011-2022 走看看