慕田峪9158850
2021-12-10 16:17:46
這是我的代碼,但它的輸出確實(shí)有意義。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但令人驚訝的是我得到了上述結(jié)果。為什么?
1 回答

喵喔喔
TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
不要降低精度并期望計(jì)算機(jī)重新創(chuàng)建它。
long currentTime = 1350065634345877L;
long stateStartTime = 1350065121656832L;
long delta = 1L;
double speed = 5.0E8;
和你的最后兩行(沒(méi)有其他變化)輸出
1.2689045E7
12689045
要使倒數(shù)第二行與最后一行匹配,您可以使用BigDecimal類似
System.out.println(new BigDecimal(currentTime - (stateStartTime + (delta * speed)))
.toPlainString());
添加回答
舉報(bào)
0/150
提交
取消