我有一个字符串是"9999999999999999“,我想把它转换成双值。
因此,当我使用Double.parseDouble()方法时,结果是1.0E16。我的代码是这样的:
String strValue = "9999999999999999";
double value = Double.parseDouble(strValue);
System.out.println(value);如何解析它才能得到绝对值为9,999,999,999,999,999.0?请帮帮我,谢谢你。
发布于 2016-05-18 10:24:44
对于大量的数字,您可以使用BigDecimal。
将值存储为
BigDecimal number = new BigDecimal("9999999999999999.0");更多信息在这里:https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html
发布于 2016-05-18 10:25:49
只有有限的有理数子集才能精确地表示为双数。9999999999999999不是其中之一。
9999999999999999正好是两个双值1.0E16和9.99999999998E15之间的一半。在这两个中,第一个有一个以零结尾的双位模式,因此是正确的轮到最近的结果。
在大多数物理测量情况下,差别太小,不重要。如果差异确实很重要,但您需要做的算术,导致分数,使用BigDecimal。
https://stackoverflow.com/questions/37296688
复制相似问题