java - 获取 Java BigDecimal 的尾数

标签 java math bigdecimal mantissa

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

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

我如何获得尾数? 545.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/

相关文章:

java - 内联 block {}之前的@Annotation

java - 如何显示小数点后3位而不进行四舍五入?

performance - Common Lisp 中前导小数位为 12 的 2 的第一个幂

java - 为什么乘以 1/2 的值与乘以 .5 的值不同?

java - 估计 BigDecimal 计算时间

Golang 数学/大 Unmarshal 失去精度

java - 在没有 web.xml 的情况下启用 ContainerRequestFilter

java - Android - 仅在 oppo 设备中获取 InflateException

java - spring snake 案例和验证错误响应

python - Python 中的连续方 block