【发布时间】:2013-01-06 23:38:45
【问题描述】:
我正在用 Java 编写一个程序来处理大量的双重算术。我最终到了需要添加 0.6666666666666666 和 -0.666666666666667 的地步。但是,我得到的答案是 -3.3306690738754696E-16。
换句话说,
double d1 = 0.6666666666666666;
double d2 = -0.666666666666667;
System.out.println(d1 + d2);
打印出“-3.3306690738754696E-16”。为什么会这样?
提前谢谢你。
【问题讨论】:
-
您受限于
double类型。它不存储精确的十进制字段,而是一个 IEEE 754 8 字节浮点数。 -
你是对的,它们是相似的。随意将问题报告为重复。对此感到抱歉。
标签: java math floating-point double