2014-10-29 40 views
1

我注意到當我在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); 

回答

3

表達組件將被評估爲整數,即中間值被截斷(10/3評估爲32*4/3的計算結果爲2等)。

更改爲以下將導致3.0

double var = 10.0/3.0 + 2.0 * 4.0/3.0 - 3.0; 
+0

非常感謝你 – user3417593 2014-10-29 19:54:32

2

在java中:

10/3 + 2 * 4/3 - 3 
(10/3) + (2 * (4/3))) - 3 
3 + (2 * 1) - 3 
3 + 2 - 3 
2 

一切都投來詮釋,那爲什麼它給了這個結果。

+0

非常感謝你 – user3417593 2014-10-29 19:54:53

+0

在這裏沒有鑄造。它只是整數除法。 – seanmcl 2014-10-29 20:30:01