我注意到當我在java和python中編譯這個操作時,我有兩個不同的結果。在Java和Python中運算符優先級的不同結果
10/3 + 2 * 4/3 - 3
結果在Java =在Python 2.0
= 3.0
我也執行在許多計算器此操作,結果是3.0任何人都可以解釋如何JAVA處理呢?
double var = 10/3+2*4/3-3;
System.out.println(var);
我注意到當我在java和python中編譯這個操作時,我有兩個不同的結果。在Java和Python中運算符優先級的不同結果
10/3 + 2 * 4/3 - 3
結果在Java =在Python 2.0
= 3.0
我也執行在許多計算器此操作,結果是3.0任何人都可以解釋如何JAVA處理呢?
double var = 10/3+2*4/3-3;
System.out.println(var);
表達組件將被評估爲整數,即中間值被截斷(10/3
評估爲3
,2*4/3
的計算結果爲2
等)。
更改爲以下將導致3.0
:
double var = 10.0/3.0 + 2.0 * 4.0/3.0 - 3.0;
在java中:
10/3 + 2 * 4/3 - 3
(10/3) + (2 * (4/3))) - 3
3 + (2 * 1) - 3
3 + 2 - 3
2
一切都投來詮釋,那爲什麼它給了這個結果。
非常感謝你 – user3417593 2014-10-29 19:54:53
在這裏沒有鑄造。它只是整數除法。 – seanmcl 2014-10-29 20:30:01
非常感謝你 – user3417593 2014-10-29 19:54:32