我想用一些非常小且非常大的数字做一些简单的数学运算。我想我会从BigDecimal开始:
scala> java.math.BigDecimal.valueOf(54, 45)
res0: java.math.BigDecimal = 5.4E-44
我如何获得尾数? 54
或5.4
都可以。
答案 0 :(得分: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()
)只剩下一个数字。