Java使用BigDecimal进行除法运算的时候:BigDecimal.divide()' called without a rounding mode argument
时间: 2024-02-26 21:57:08 浏览: 212
在Java中使用BigDecimal进行除法运算时,必须指定精度和舍入模式。如果不指定舍入模式,则会抛出异常“java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.”。
我们可以使用BigDecimal的divide方法来进行除法运算。该方法有三个重载方法:
1. divide(BigDecimal divisor):使用默认精度和默认舍入模式进行除法运算。
2. divide(BigDecimal divisor, int scale):指定精度,使用默认舍入模式进行除法运算。
3. divide(BigDecimal divisor, int scale, int roundingMode):同时指定精度和舍入模式进行除法运算。
示例代码:
```java
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("10");
BigDecimal b = new BigDecimal("3");
BigDecimal result = a.divide(b, 2, RoundingMode.HALF_UP); // 保留2位小数,四舍五入
System.out.println(result); // 3.33
}
}
```
在上面的代码中,我们使用BigDecimal的divide方法进行除法运算,指定了精度为2,舍入模式为四舍五入(RoundingMode.HALF_UP)。这样就可以避免异常“java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.”的出现。
阅读全文