2011-12-29 1 views
15

我想分兩個整數乘以100,但它一直只給0或100。有人可以幫我嗎?在Java中劃分兩個整數給我0或100?

int x= (a/b)*100; 

如果a是500,b是1000,它會給我0.唯一一次給我100是a> = b。我怎樣才能解決這個問題?

謝謝

+0

請解釋預期的結果。 – Vincent 2011-12-29 16:52:59

回答

36

你可以做的是迫使它劃分ab爲這樣雙打:

int x = (int) (((double) a/(double) b) * 100); 
+0

這一個缺少一個轉換爲'int'。否則它不會編譯。 – Howard 2011-12-29 15:44:28

+0

這工作完全謝謝:) – arberb 2011-12-29 15:45:30

+0

請接受爲答案,因爲它會提出這個答案的頂部,並幫助其他人,謝謝。 – ridecar2 2011-12-29 15:47:04

6

這聽起來像你沒有正確輸入你的變量;兩個整數除法導致一個整數,而不是浮點數或雙精度。例如:

(int)3/(int)5 = 0 
(float)3/(float)5 = 0.6 
9

整數除法沒有分數,所以1000分之500= 0.5(即沒有整!),它被截斷爲整數0您可能希望

int x = a * 100/b; 
+0

但請注意,這種方法可能會溢出。 – Howard 2011-12-29 15:43:23

+0

除非您先投入您的整數首先 – njzk2 2011-12-29 15:49:24

2

試試這個:

int x = a * 100/b; 

的想法是,你第一次做a/b,因爲它是整數運算,這將結果四捨五入爲0。做a * 100首先應該解決它。

+1

但請注意,這種方法可能會溢出。 – Howard 2011-12-29 15:43:40