获取 Java BigDecimal 的尾数
我想用一些非常小的和非常大的数字做一些简单的数学运算。我想我应该从 BigDecimal 开始:
scala> java.math.BigDecimal.valueOf(54, 45)
res0: java.math.BigDecimal = 5.4E-44
然后如何获得尾数? 54
或 5.4
都可以。
I want to do some simple math with some very small and very large numbers. I figured I'd start with BigDecimal:
scala> java.math.BigDecimal.valueOf(54, 45)
res0: java.math.BigDecimal = 5.4E-44
How do I then get the the mantissa? Either 54
or 5.4
would be fine.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
BigDecimal.unscaledValue()
:此方法的结果是
BigInteger
,因为BigDecimal
具有任意长度的十进制精度。编辑
这是我发现的另一种方式(5.4)的最干净的方式:
我测试的次数较少,但它应该涵盖所有情况。它会缩放数字,使得没有小数部分 (
bd.scale()
),但随后会缩小数字,以便小数点后只剩下一个数字 (1 - bd. precision ()
)。BigDecimal.unscaledValue()
:The result of this method is a
BigInteger
sinceBigDecimal
has arbitrary length decimal precision.Edit
Here's the cleanest way I found to get the other way (5.4):
This I've tested less but it should cover all cases. It scales the number such that there is no decimal fraction (
bd.scale()
), but then scales back so that only one number is left of the decimal point (1 - bd.precision()
).