首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Java BigDecimal的尾数

获取Java BigDecimal的尾数
EN

Stack Overflow用户
提问于 2011-03-12 04:13:43
回答 1查看 2.5K关注 0票数 1

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

代码语言:javascript
复制
scala> java.math.BigDecimal.valueOf(54, 45) 
res0: java.math.BigDecimal = 5.4E-44

那么我如何得到尾数呢?无论是54还是5.4都可以。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-12 04:31:31

BigDecimal.unscaledValue()

代码语言:javascript
复制
BigDecimal bd = BigDecimal.valueOf(54, 45);
System.out.println(bd.unscaledValue()); //prints "54"

这个方法的结果是一个BigInteger,因为BigDecimal具有任意长度的小数精度。

编辑

下面是我找到的最干净的方法(5.4):

代码语言:javascript
复制
  bd.scaleByPowerOfTen(bd.scale() + 1 - bd.precision());

这个我测试得比较少,但它应该涵盖所有的情况。它按比例缩放数字,使其不存在小数(bd.scale()),但随后按比例缩小,使小数点(1 - bd.precision())只剩下一个数字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5277819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档