为什么int exp1 = 14/20 * 100;在java中等于'0'?

时间:2012-04-26 14:46:34

标签: java math int

我正在尝试做一些基本的数学运算,它不断弹出0。我确定它与int有关,但我不知道如何解决它。我需要使用整数,但数学到达那些整数使用小数。我该怎么做?

4 个答案:

答案 0 :(得分:8)

那是整数除法。

要获得非整数结果,请改用double

答案 1 :(得分:3)

这对黑莓来说并不特别,它是标准的java行为。

这是因为你正在做整数数学:

int subexpr1 = 14 / 20; // 0
int subexpr2 =  subexpr1 * 100; // 0

使用double代替或更改顺序

int expr1 = (int) 14.0/20 * 100; // Very small possibility of rounding errors
int expr2 = 14 * 100 / 20; // Will ignore fraction parts

答案 2 :(得分:1)

您可以将其更改为14 * 100/20 - 然后它会提供您想要的内容。

即。更改操作顺序(14/20为0)

答案 3 :(得分:-1)

您的结果被投射为int,因此您正在失去精确度。

尝试

double exp1 = 14/20.0*100;