BigDecimal用除法时候需要指定精度 | 您所在的位置:网站首页 › bigdecimal除不尽怎么办 › BigDecimal用除法时候需要指定精度 |
先上结论: 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 实验室设备网 版权所有 |