2012-03-27 1432 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