下面的簡單浮點算術運算未按預期工作。浮點算術運算不如預期
double den = (1+j);
System.out.println(den);
den = 1/den;
System.out.println(den);
double newden = 1/(1+j);
System.out.println(newden);
上面的代碼給出了以下輸出。
7.0
0.14285714285714285
0.0
如上所示,第一兩個操作按預期工作但最後沒有。我想這與變量類型有關,但還沒有找出問題所在。
您能解釋一下Java中算術運算的行爲嗎?
'1 /(1 + j)的'是'int'計算和將留下一個'int'結果,而'1/den'是一個'double'計算(因爲'den'是一個'double'',這會給你一個'double'。 (只是猜測'j' beeing一個'int',因爲它不可見它代表的是什麼) – SomeJavaGuy
我猜j是一個整型變量。所以整個表達式'1 /(1 + j)'也被認爲是一個整數。你可以用'j'來加倍以得到預期的結果。 'newden = 1 /(1 +((double)j)' – kaetzacoatl
ahhh得到它'j'只是一個計數器。但是如果我聲明一個double,爲什麼'1 /(1 + j)'是一個整數計算? – user3540466