在四舍五入之前可以检测到“java.lang.ArithmeticException:四舍五入”吗?

Mek*_*iki 1 java scala bigdecimal

由十进制字符串生成的 java.math.BigDecimal 有时可用于 setScale(n) 但有时不可用。

scala> BigDecimal("1.00000000").setScale(1)
res0: scala.math.BigDecimal = 1.0

scala> BigDecimal("1.00000001").setScale(1)
java.lang.ArithmeticException: Rounding necessary
Run Code Online (Sandbox Code Playgroud)

我知道我可以捕获抛出的异常,但是在调用 setScale 之前有什么方法可以知道是否需要四舍五入?

che*_*ohi 7

我想你可以设置默认的舍入setScale,如:

BigDecimal("1.00000001").setScale(1, scala.math.BigDecimal.RoundingMode.HALF_DOWN)
Run Code Online (Sandbox Code Playgroud)