我想用一些非常小的和非常大的数字做一些简单的数学运算。我想我应该从 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 ()
)。
关于java - 获取 Java BigDecimal 的尾数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277819/