2013-03-21 180 views
0

我想分2龍的爲了找到百分比。但是,我只能得到0.0%或者當它們相等時,100.0%。這是我在做什麼打印完成百分比

long size = 
long mem = 

double avg = (double)(size/mem) * 100; 
+0

請做一個搜索,你下次問一個問題之前。 – 2013-03-21 20:48:00

+1

@SotiriosDelimanolis你會使用哪些搜索詞?假設OP完全不知道術語「整數除法」。 – Mysticial 2013-03-21 20:49:10

+0

@Mysticial'java long division'如此多的結果 – 2013-03-21 20:53:38

回答

5

你在做long部門,它截斷了數字的小數部分。至少有一個操作數必須爲一個double產生非零double,你可以這樣做:

double avg = (double)size/mem * 100; 

的分子現在變成了double作爲鑄件具有high precedence比除法運算/

+0

謝謝你做到了。我笑嘻嘻在字長 – user2007843 2013-03-21 20:52:07

+0

這個「長」的分工發揮作用,但你可以得到更多的小數位比你想要的。 – 2013-03-21 23:07:07

1

如果你想避免長的十進制數,你可以使用。

long percentage = 100 * size/mem; // as an integer. 

如果你想要一個小數位,你可以做

double percentage = (1000 * size/mem)/10.0; 
+0

在第一種情況下,它會舍入分數。如果你不先乘以100,你會得到0%或100%的建議。如果您先乘以100,則將百分比舍入,以得到0,1,2 ... 99,100。如果乘以1000併除以10.0,則得到0.0,0.1,0.2 ... 99.9,100.0 – 2013-03-21 23:33:11