我有两个整数值,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