BigDecimal用除法时候需要指定精度 您所在的位置:网站首页 bigdecimal除不尽怎么办 BigDecimal用除法时候需要指定精度

BigDecimal用除法时候需要指定精度

2024-07-03 05:14| 来源: 网络整理| 查看: 265

先上结论:

1,Java的BigDecimal在使用除法(divide方法)时,应该手动指定精度和舍入的方式。

2,如果不指定精度和舍入方式,在除不尽的时候会报异常。

 

会报错的代码:

         public static void main(String[] args) {                                 BigDecimal a=new BigDecimal("10");                    BigDecimal b=new BigDecimal("3");                    BigDecimal c=a.divide(b);                    System.out.println(c);          }

执行之后的报错:

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

         at java.math.BigDecimal.divide(Unknown Source)

         at test.Test.main(Test.java:15)

 

正确的代码:

         public static void main(String[] args) {                                 BigDecimal a=new BigDecimal("10");                    BigDecimal b=new BigDecimal("3");                    BigDecimal c=a.divide(b,2, BigDecimal.ROUND_HALF_UP);                    System.out.println(c);          }

执行后的结果:

3.33

 

方法说明:

java.math.BigDecimal.divide(BigDecimal divisor, int scale, int roundingMode)

方法的第二个参数是精确到小数点后的位数。代码中的2代表精确到小数点后第二位。

方法的第三个参数是舍入模式。代码中的BigDecimal.ROUND_HALF_UP就是平时我们说的四舍五入。另外BigDecimal还提供了很多种其他的舍入方式。

 

以上



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有