记一次报错,代码样例:
public static void main(String[] args) {BigDecimal bigDecimal = new BigDecimal(1234.5);int res = bigDecimal.intValueExact();}
报错信息:
Exception in thread "main" java.lang.ArithmeticException: Rounding necessaryat 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,则就会抛出上面这个异常