2012-03-27 1430 views
3

我有兩個整數值,x和總數。我試圖找出整體中x的百分比。這就是我現在的做法:Java:試圖獲得整數的百分比,如何取整?

percentage =(int)((x * 100)/ total);

百分比必須是整數。當我這樣做時,它總是將小數點向下舍入。有沒有簡單的方法來計算百分比作爲一個整數,所以如果小數點是0.5或更高,它會舍入?

回答

13

使用Math.round(x * 100.0/total)。但請注意,這會返回一個很長的時間,因此需要簡單地轉換爲int

我把100.0強制它在舍入之前使用浮點運算。

+0

有一個重載的方法返回int。所以演員陣容並非絕對必要。 – 2012-03-27 23:38:48

+0

@DhariniChandrasekaran我相信如果你傳入一個浮點數,它會返回一個int值?我寫它的方式會傳入一個double並返回一個long。 – joshuahealy 2012-03-27 23:43:29

+0

@Churk實際上我編輯了我的答案,因爲x,100和total都是整數,所以算術將會是整數,並且調用round會浪費時間。我改爲100.0,使其使用浮點運算,然後添加一個解釋。 – joshuahealy 2012-03-27 23:48:16

1

爲什麼不使用Math.round((x*100)/total);

+0

+1,因爲你在我之前幾秒鐘:) – 2012-03-28 00:02:59

+1

這個答案並不能解決問題,因爲'x'和'total'都是整數。表達式將使用整數運算進行評估,並在傳遞到循環函數之前「舍入」下來。 – joshuahealy 2012-03-28 00:21:48

2

只需使用Math.round(100.0/total * x);

1

使用標準的數學庫在Java中。

percentage = Math.round(*your expression here*); 
1

您可以爲正值(輪infitity)

percentage = (int)(x * 100.0/total + 0.5); 

這比使用Math.round更快,但可能不夠清晰加0.5。

順便說一下:100.0/total * x可能不會產生與x * 100.0/total相同的結果,因爲評估順序可以更改浮點結果。

0

最簡單的方法 -

問題:如何圍捕值的十進制數(如:INT N = 4.57)

答:Math.round(N);

輸出:5。

+0

它只是部分回答了這個問題。你能否詳細闡述一個完整的答案? – 2013-06-07 11:59:59

+0

這也不正確;你可能想要更仔細地閱讀這個問題,並檢查出正確回答它的許多現有答案。 – 2013-06-07 16:30:17