BigDecimal val0 = new BigDecimal(1.0 / 2);
System.out.println(val0);
System.out.println(val0.setScale(2));
BigDecimal val1 = new BigDecimal(1.0 / 3);
System.out.println(val1);
System.out.println(val1.setScale(2));
Console:
0.5
0.50
0.333333333333333314829616256247390992939472198486328125
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.commonNeedIncrement(BigDecimal.java:4148)
at java.math.BigDecimal.needIncrement(BigDecimal.java:4355)
at java.math.BigDecimal.divideAndRound(BigDecimal.java:4330)
at java.math.BigDecimal.setScale(BigDecimal.java:2470)
at java.math.BigDecimal.setScale(BigDecimal.java:2512)
at com.javase.main.Main.main(Main.java:112)
Process finished with exit code 1