非常に小さい数と非常に大きい数を使って簡単な計算をしたいと思います。私はBigDecimalから始めると思いました:
scala> java.math.BigDecimal.valueOf(54, 45)
res0: java.math.BigDecimal = 5.4E-44
次に、仮数を取得するにはどうすればよいですか?54
またはどちらでも構い5.4
ません。
非常に小さい数と非常に大きい数を使って簡単な計算をしたいと思います。私はBigDecimalから始めると思いました:
scala> java.math.BigDecimal.valueOf(54, 45)
res0: java.math.BigDecimal = 5.4E-44
次に、仮数を取得するにはどうすればよいですか?54
またはどちらでも構い5.4
ません。
BigDecimal.unscaledValue()
:
BigDecimal bd = BigDecimal.valueOf(54, 45);
System.out.println(bd.unscaledValue()); //prints "54"
このメソッドの結果は、BigInteger
任意BigDecimal
の長さの10進数の精度を持つためです。
これが私が他の方法(5.4)を取得するために見つけた最もクリーンな方法です:
bd.scaleByPowerOfTen(bd.scale() + 1 - bd.precision());
これは私があまりテストしていませんが、すべてのケースをカバーするはずです。小数部(bd.scale()
)がないように数値をスケーリングしますが、小数点()の残りの数値が1つだけになるようにスケールバックし1 - bd.precision()
ます。