这是我的代码,但它的输出确实有意义。long currentTime;long stateStartTime;int delta;float speed;// I do somethingSystem.out.println();System.out.println(currentTime);System.out.println(stateStartTime);System.out.println(delta);System.out.println(speed);System.out.println(delta * speed);System.out.println(currentTime - (stateStartTime + (delta * speed)));stateStartTime += delta * speed;System.out.println(currentTime - stateStartTime);输出:1350065634345877135006512165683215.0E85.0E80.0-24181867我期待最后两行是:1268904512689045但令人惊讶的是我得到了上述结果。为什么?
1 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
不要降低精度并期望计算机重新创建它。
long currentTime = 1350065634345877L;
long stateStartTime = 1350065121656832L;
long delta = 1L;
double speed = 5.0E8;
和你的最后两行(没有其他变化)输出
1.2689045E7
12689045
要使倒数第二行与最后一行匹配,您可以使用BigDecimal类似
System.out.println(new BigDecimal(currentTime - (stateStartTime + (delta * speed)))
.toPlainString());
添加回答
举报
0/150
提交
取消