我想用一些非常小和非常大的数字做一些简单的数学运算。我想我会从 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
具有任意长度的小数精度。
这是我发现的最干净的方法(5.4):
bd.scaleByPowerOfTen(bd.scale() + 1 - bd.precision());
这我测试得较少,但它应该涵盖所有情况。它对数字进行缩放以使没有小数部分 ( bd.scale()
),但随后按比例缩小以使小数点 ( ) 只剩下一个数字1 - bd.precision()
。