11

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

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

但它不起作用。

4

7 回答 7

47
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));
于 2013-08-03T16:30:47.127 回答
5
int k = (int)(120*50.0/100.0);
于 2013-08-03T16:17:38.260 回答
4

如果您想要精确的数字和一致的结果,切勿使用浮点原始类型,而应使用 BigDecimal。

您的代码的问题是 (120/100) 的结果是 1,因为实际上 120/100=1.2,但根据 java,int/int 始终是 int。要暂时解决您的问题,请将值转换为 float 或 double 并将结果转换回 int。

于 2013-08-03T16:30:07.237 回答
2

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

这意味着,例如,使用 BigDecimal 50% 的 x 加上 30% 的 x 加上 20% 的 x 总和等于 x。

于 2013-08-03T16:23:47.560 回答
1

很简单 2 * 2 = 4 :)

int k = (int)(50 * 120) / 100;
于 2016-03-05T22:47:00.563 回答
-1

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

int i = 120 * 50 / 100;

或者

int i = 120 / 2;
于 2013-08-03T17:33:29.420 回答
-1

除法必须是浮点数,而不是整数

(120f * 50 / 100f)

于 2013-08-03T16:37:22.480 回答