有没有办法计算(例如)120%的50%? 我试过了:
int k = (int)(120 / 100)*50;
但它不起作用。
答案 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;