我有兩個整數值,x和總數。我試圖找出整體中x的百分比。這就是我現在的做法:Java:試圖獲得整數的百分比,如何取整?
percentage =(int)((x * 100)/ total);
百分比必須是整數。當我這樣做時,它總是將小數點向下舍入。有沒有簡單的方法來計算百分比作爲一個整數,所以如果小數點是0.5或更高,它會舍入?
我有兩個整數值,x和總數。我試圖找出整體中x的百分比。這就是我現在的做法:Java:試圖獲得整數的百分比,如何取整?
percentage =(int)((x * 100)/ total);
百分比必須是整數。當我這樣做時,它總是將小數點向下舍入。有沒有簡單的方法來計算百分比作爲一個整數,所以如果小數點是0.5或更高,它會舍入?
使用Math.round(x * 100.0/total)
。但請注意,這會返回一個很長的時間,因此需要簡單地轉換爲int
。
我把100.0強制它在舍入之前使用浮點運算。
爲什麼不使用Math.round((x*100)/total);
+1,因爲你在我之前幾秒鐘:) – 2012-03-28 00:02:59
這個答案並不能解決問題,因爲'x'和'total'都是整數。表達式將使用整數運算進行評估,並在傳遞到循環函數之前「舍入」下來。 – joshuahealy 2012-03-28 00:21:48
只需使用Math.round(100.0/total * x);
使用標準的數學庫在Java中。
percentage = Math.round(*your expression here*);
(int)Math.round(100.0/total * x);
應該工作。
您可以爲正值(輪infitity)
percentage = (int)(x * 100.0/total + 0.5);
這比使用Math.round更快,但可能不夠清晰加0.5。
順便說一下:100.0/total * x
可能不會產生與x * 100.0/total
相同的結果,因爲評估順序可以更改浮點結果。
最簡單的方法 -
問題:如何圍捕值的十進制數(如:INT N = 4.57)
答:Math.round(N);
輸出:5。
它只是部分回答了這個問題。你能否詳細闡述一個完整的答案? – 2013-06-07 11:59:59
這也不正確;你可能想要更仔細地閱讀這個問題,並檢查出正確回答它的許多現有答案。 – 2013-06-07 16:30:17
有一個重載的方法返回int。所以演員陣容並非絕對必要。 – 2012-03-27 23:38:48
@DhariniChandrasekaran我相信如果你傳入一個浮點數,它會返回一個int值?我寫它的方式會傳入一個double並返回一個long。 – joshuahealy 2012-03-27 23:43:29
@Churk實際上我編輯了我的答案,因爲x,100和total都是整數,所以算術將會是整數,並且調用round會浪費時間。我改爲100.0,使其使用浮點運算,然後添加一個解釋。 – joshuahealy 2012-03-27 23:48:16