我有一个字符串是"999999999999",我想将其交换为双倍值。
因此,当我使用Double.parseDouble()方法时,结果是1.0E16。我的代码活在这里:
String strValue = "9999999999999999";
double value = Double.parseDouble(strValue);
System.out.println(value);
如何解析它以获得999999999999.0的绝对值?请帮帮我,谢谢你。
对于大数字,可以使用BigDecimal。
将值存储为
BigDecimal number = new BigDecimal("9999999999999999.0");
更多信息请点击此处:https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html
只有有理数的有限子集可以精确地表示为二重。9999999999999999不是其中之一。
9999999999999999正好位于两个双值1.0E16和9.99999999998E15之间的一半。在这两者中,第一个具有以零结束的双位模式,因此是最接近结果的正确舍入。
在大多数物理测量情况下,差异太小而无关紧要。如果差异真的很重要,但您需要进行算术运算以得到分数,请使用BigDecimal。