我想用一些非常小的和非常大的数字做一些简单的数学运算。我想我应该从BigDecimal开始:
scala> java.math.BigDecimal.valueOf(54, 45)
res0: java.math.BigDecimal = 5.4E-44那么我如何得到尾数呢?无论是54还是5.4都可以。
发布于 2011-03-12 04:31:31
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())只剩下一个数字。
https://stackoverflow.com/questions/5277819
复制相似问题