Java的数量百分比

时间:2013-08-03 16:16:20

标签: java

有没有办法计算(例如)120%的50%? 我试过了:

int k = (int)(120 / 100)*50;

但它不起作用。

7 个答案:

答案 0 :(得分:34)

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));

答案 1 :(得分:4)

int k = (int)(120*50.0/100.0);

答案 2 :(得分:4)

如果您需要精确的数字和一致的结果,请不要使用浮点基元类型,而是使用BigDecimal。

你的代码的问题是(120/100)的结果是1,因为实际上120/100 = 1.2,但是根据java,int / int总是一个int。 要解决现在的问题,请将值转换为float或double,然后将结果转换回int。

答案 3 :(得分:2)

我建议使用BigDecimal,而不是float或double。除以100在BigDecimal中始终是精确的,但可能导致浮点数或双精度的舍入误差。

这意味着,例如,使用BigDecimal 50%的x加30%的x加20%的x将总是精确到x。

答案 4 :(得分:0)

它很简单,因为2 * 2 = 4 :)

int k = (int)(50 * 120) / 100;

答案 5 :(得分:-1)

分区必须是float,而不是int

(120f * 50 / 100f)

答案 6 :(得分:-1)

在这种情况下你不需要浮点数你可以写

int i = 120 * 50 / 100;

int i = 120 / 2;