Java中一个数字的百分比

11

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

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

但它不起作用。


你正在对120进行整数除以100,结果是1。你需要先乘以50再除以100,或者使用浮点数。 - Joachim Isaksson
3
是的,Java 能够进行基本的数学计算。 - Brian Roach
7个回答

57
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
或者,你知道的,120/2 - Qix - MONICA WAS MISTREATED

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

1
为什么要复杂化呢?内部括号实际上并不是必需的。 - Ankit

4

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

您代码中的问题在于(120/100)的结果是1,因为实际上120/100=1.2,但是按照Java的规定,int/int总是一个int。 为了解决您的问题,现在可以将任意一个值转换为float或double,并将结果强制转换回int。


2

我建议使用BigDecimal,而不是float或double。在BigDecimal中,除以100总是精确的,但在float或double中可能会导致舍入误差。

这意味着,例如,使用BigDecimal 50%的x加上30%的x加上20%的x将始终准确地总和为x。


1

它就像 2 * 2 = 4 一样简单 :)

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

-1

在这种情况下,您不需要浮点数,可以写成:

int i = 120 * 50 / 100;

或者

int i = 120 / 2;

-1

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

(120f * 50 / 100f)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接