1

非常に小さい数と非常に大きい数を使って簡単な計算をしたいと思います。私はBigDecimalから始めると思いました:

scala> java.math.BigDecimal.valueOf(54, 45) 
res0: java.math.BigDecimal = 5.4E-44

次に、仮数を取得するにはどうすればよいですか?54またはどちらでも構い5.4ません。

4

1 に答える 1

2

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()ます。

于 2011-03-11T20:31:31.130 に答える