2010-07-08 68 views

回答

12

如果我不是完全錯誤的,35/4結果始終爲8即使在

double result = 35/4; 

,你會得到這樣的結果(如雙,即8.0)。這是因爲354都是整數,因此應用整數除法。表達式首先被計算爲整數,只有結果被轉換爲雙精度值。

在另一方面,如果你想正確的結果8.75你就必須寫應用

double result = 35./4; 

,以迫使浮點除法。這是一個常見的陷阱。

當然,如果你有雙重價值,就像在

double a = 35; 
double b = 4; 

你需要或者明確地強制轉換爲int或使用Math.floor()在以前的文章建議。

+0

所以,如果我只寫int/int,它很酷?我會得到一個8? – user225626 2010-07-08 08:33:44

+0

@ user225626是的。你爲什麼不自己嘗試一下呢? – Jesper 2010-07-08 11:18:41

+0

我在接受之前做過。我只是想確保這是語言設計。 – user225626 2010-07-08 13:46:31

10

使用

Math.floor(..) 

返回最大的(最接近正無窮大)double值小於或等於參數並且等於一個數學整數。

或者,如果你需要操作整數,而不是雙打,然後簡單地分配給INT:

int a = 35/4; 

其實,如果你用數字直接工作,或者爲int變量,你會得到一個int自動結果。

2

使用

int myInt = (int) Math.floor(value); 

8.75將被舍入到8鑄造爲INT去除的情況下,值小數是雙顯式轉換表達爲INT

0

+2

不,它會返回9(如果參數是「雙」) – Bozho 2010-07-08 07:14:08

+0

是的,你說得對。我不好。 – 2010-07-08 07:15:41

+0

你可以編輯你的答案,寫出正確的方法。 – Bozho 2010-07-08 07:19:21

1
int x = 35/4 

整數除法造成8人,你可以給它返回`8.75`代碼返回而不是8.75