首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爪哇大双

爪哇大双
EN

Stack Overflow用户
提问于 2016-05-18 10:18:47
回答 2查看 1.3K关注 0票数 1

我有一个字符串是"9999999999999999“,我想把它转换成双值。

因此,当我使用Double.parseDouble()方法时,结果是1.0E16。我的代码是这样的:

代码语言:javascript
复制
String strValue = "9999999999999999";
double value = Double.parseDouble(strValue);
System.out.println(value);

如何解析它才能得到绝对值为9,999,999,999,999,999.0?请帮帮我,谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2016-05-18 10:24:44

对于大量的数字,您可以使用BigDecimal。

将值存储为

代码语言:javascript
复制
BigDecimal number = new BigDecimal("9999999999999999.0");

更多信息在这里:https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html

票数 2
EN

Stack Overflow用户

发布于 2016-05-18 10:25:49

只有有限的有理数子集才能精确地表示为双数。9999999999999999不是其中之一。

9999999999999999正好是两个双值1.0E16和9.99999999998E15之间的一半。在这两个中,第一个有一个以零结尾的双位模式,因此是正确的轮到最近的结果。

在大多数物理测量情况下,差别太小,不重要。如果差异确实很重要,但您需要做的算术,导致分数,使用BigDecimal。

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

https://stackoverflow.com/questions/37296688

复制
相关文章

相似问题

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