有没有办法计算(例如)120的50%?我尝试过:
int k = (int)(120 / 100)*50;
但它不起作用。
有没有办法计算(例如)120的50%?我尝试过:
int k = (int)(120 / 100)*50;
但它不起作用。
int k = (int)(120 / 100)*50;
上述方法无法生效,因为您执行的是整数除法表达式(120/100),其结果为整数1,然后将该结果乘以50,从而得到最终结果50。
如果你想计算120的50%,请使用以下方法:
int k = (int)(120*(50.0f/100.0f));
更普遍地说:
int k = (int)(value*(percentage/100.0f));
120/2
。 - Qix - MONICA WAS MISTREATEDint k = (int)(120*50.0/100.0);
如果您想要精确的数字和一致的结果,永远不要使用浮点原始类型,而应该使用BigDecimal。
您代码中的问题在于(120/100)的结果是1,因为实际上120/100=1.2,但是按照Java的规定,int/int总是一个int。 为了解决您的问题,现在可以将任意一个值转换为float或double,并将结果强制转换回int。
我建议使用BigDecimal,而不是float或double。在BigDecimal中,除以100总是精确的,但在float或double中可能会导致舍入误差。
这意味着,例如,使用BigDecimal 50%的x加上30%的x加上20%的x将始终准确地总和为x。
它就像 2 * 2 = 4 一样简单 :)
int k = (int)(50 * 120) / 100;
在这种情况下,您不需要浮点数,可以写成:
int i = 120 * 50 / 100;
或者
int i = 120 / 2;
除法必须是浮点数,而不是整数
(120f * 50 / 100f)