为了账号安全,请及时绑定邮箱和手机立即绑定

Java:应用 += 时会丢失一些东西

Java:应用 += 时会丢失一些东西

慕田峪9158850 2021-12-10 16:17:46
这是我的代码,但它的输出确实有意义。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());


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信