可能原因:对BigDecimal对象设置了精度,但是没有设置取舍方式,会报错java.lang.ArithmeticException: Rounding necessary。
@Test
public void testDecimal() {
String str = "3.33333";
BigDecimal decimal = new BigDecimal(str);
try {
System.out.println("setScale(2):" + decimal.setScale(2));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("setScale(2, RoundingMode.HALF_UP):" + decimal.setScale(2, RoundingMode.HALF_UP));
} catch (Exception e) {
e.printStackTrace();
}
}
java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.commonNeedIncrement(BigDecimal.java:4148)
at java.math.BigDecimal.needIncrement(BigDecimal.java:4204)
at java.math.BigDecimal.divideAndRound(BigDecimal.java:4112)
at java.math.BigDecimal.setScale(BigDecimal.java:2452)
at java.math.BigDecimal.setScale(BigDecimal.java:2512)
at com.dz.MapTest.testDecimal(MapTest.jav