首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有E的Java BigDecimal

问没有E的Java BigDecimal
EN

Stack Overflow用户
提问于 2012-08-19 20:50:30
回答 4查看 11.8K关注 0票数 13

我有一个BigDecimal变量

代码语言:javascript
复制
BigDecimal x = new BigDecimal("5521.0000000001");

公式:

代码语言:javascript
复制
x = x.add(new BigDecimal("-1")
      .multiply(x.divideToIntegralValue(new BigDecimal("1.0"))));

我想去掉整数部分,以获得值x = ("0.0000000001"),但我的新值是1E-10,而不是0.0000000001。

EN

回答 4

Stack Overflow用户

发布于 2012-08-19 21:18:48

要获得不带指数部分的BigDecimal的String表示,可以使用

BigDecimal.toPlainString()。在您的示例中:

代码语言:javascript
复制
BigDecimal x = new BigDecimal("5521.0000000001");
x = x.add(new BigDecimal("-1").
              multiply(x.divideToIntegralValue(new BigDecimal("1.0"))));
System.out.println(x.toPlainString());

打印

代码语言:javascript
复制
0.0000000001
票数 21
EN

Stack Overflow用户

发布于 2017-10-06 14:06:46

尝试使用BigDecimal.toPlainString()获取所需的纯字符串形式的值。

票数 2
EN

Stack Overflow用户

发布于 2012-08-21 04:06:23

也许使用BigDecimal对您没有真正的帮助。

代码语言:javascript
复制
double d = 5521.0000000001;
double f = d - (long) d;
System.out.printf("%.10f%n", f);

打印

代码语言:javascript
复制
0.0000000001

但是,值5521.0000000001只是一个近似表示。

实际的表示是

代码语言:javascript
复制
double d = 5521.0000000001;
System.out.println(new BigDecimal(d));
BigDecimal db = new BigDecimal(d).subtract(new BigDecimal((long) d));
System.out.println(db);

打印

代码语言:javascript
复制
5521.000000000100044417195022106170654296875
1.00044417195022106170654296875E-10

我怀疑无论您尝试什么都没有意义,因为您似乎正在尝试获取一个与您认为的值不同的值。

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

https://stackoverflow.com/questions/12026610

复制
相关文章

相似问题

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