2017-06-12 4 views
0

decimal stringで生成されたjava.math.BigDecimalは、setScale(n)で使用できることがありますが、時には使用できないことがあります。私が知っている四捨五入する前に「java.lang.ArithmeticException:丸めが必要ですか」が検出できますか?

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

scala> BigDecimal("1.00000001").setScale(1) 
java.lang.ArithmeticException: Rounding necessary 

私は、スローされた上で例外をキャッチ が、setScaleを呼び出す前に必要かどうかを丸めているかどうかを知るためにどのような方法がありますができますか?

答えて

3

以上であるかどうかを確認できます。

BigDecimal("1.00000001").setScale(1, scala.math.BigDecimal.RoundingMode.HALF_DOWN) 
0

あなたは、私はあなたのような、setScaleためを丸めデフォルトを設定することができると思う1 [0.1、0.001]で剰余を行うと、リマインダーが0

+0

これを試しましたか? –

1

BigDecimal.scaleを呼び出すと、BigDecimalの現在のスケールが返されます。

setScaleを呼び出すと、パラメータが現在のスケールよりも小さい場合は例外がスローされます。

+0

しかし、 'setScale(int、RoundingMode)'はしません。 –

関連する問題