2013-03-21 183 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