有没有办法计算(例如)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));
int 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 始终是精确的,但会导致浮点数或双精度数的舍入错误。
这意味着,例如,使用 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)