1

我想用一些非常小和非常大的数字做一些简单的数学运算。我想我会从 BigDecimal 开始:

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

那么我如何获得尾数?要么 要么545.4很好。

4

1 回答 1

2

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()

于 2011-03-11T20:31:31.130 回答