"java.lang.ArithmeticException: Rounding necessary" 可以检测到舍入前吗?
Can "java.lang.ArithmeticException: Rounding necessary" is detected before rounding?
由十进制字符串生成的 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
我知道我可以捕获抛出的异常,
但是在调用 setScale 之前有没有办法知道是否需要舍入?
您可以对 1 [0.1, 0.001] 取模,然后检查提醒是否大于 0
我认为您可以为 setScale
设置 默认舍入 ,例如:
BigDecimal("1.00000001").setScale(1, scala.math.BigDecimal.RoundingMode.HALF_DOWN)
您可以调用 BigDecimal.scale
,这将 return BigDecimal 的当前小数位数。
如果参数小于当前比例,调用setScale
会抛出异常
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
我知道我可以捕获抛出的异常, 但是在调用 setScale 之前有没有办法知道是否需要舍入?
您可以对 1 [0.1, 0.001] 取模,然后检查提醒是否大于 0
我认为您可以为 setScale
设置 默认舍入 ,例如:
BigDecimal("1.00000001").setScale(1, scala.math.BigDecimal.RoundingMode.HALF_DOWN)
您可以调用 BigDecimal.scale
,这将 return BigDecimal 的当前小数位数。
如果参数小于当前比例,调用setScale
会抛出异常