记一次报错,代码样例:
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal(1234.5);
int res = bigDecimal.intValueExact();
}
报错信息:
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divideAndRound(BigDecimal.java:1452)
at java.math.BigDecimal.setScale(BigDecimal.java:2402)
at java.math.BigDecimal.longValueExact(BigDecimal.java:2990)
at java.math.BigDecimal.intValueExact(BigDecimal.java:3047)
原因就是BigDecimal的方法intValueExact,是返回BigDecimal对象的int值,如果原来这个值具有非零小数部分,或者不适合int,则就会抛出上面这个异常