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

为什么int exp1=14/20*100;在java中等于“0”?,java,math,int,Java,Math,Int,我试着做一些基本的数学运算,结果总是出现0。我确信这和它是一个int有关,但我不知道如何处理它。我需要使用整数,但计算这些整数的数学运算使用小数。怎么做?那是整数除法 要获得非整数结果,请改用双精度。您可以将其更改为14*100/20,然后它将给出您想要的结果 也就是说,将14/20的操作顺序更改为0这对blackberry来说并不特殊,这是标准的java行为 这是因为您正在进行整数运算: int subexpr1 = 14 / 20; // 0 int subexpr2 = subexpr1

我试着做一些基本的数学运算,结果总是出现0。我确信这和它是一个int有关,但我不知道如何处理它。我需要使用整数,但计算这些整数的数学运算使用小数。怎么做?

那是整数除法


要获得非整数结果,请改用双精度。

您可以将其更改为14*100/20,然后它将给出您想要的结果


也就是说,将14/20的操作顺序更改为0这对blackberry来说并不特殊,这是标准的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

您的结果将被强制转换为int,因此您将失去精度

试一试


天哪,别再这样了……整数除法在每种语言中都是如此。@duffymo不适用于弱类型语言;真正地发布一个JavaScript示例。我很确定两个整数在除法时会这样做。问题是我不知道要搜索什么来找到…然后我如何将double转换为int并将其舍入?即0.65*10=6.5,但转换为int使其舍入7@JoeyJohnJohn使用Mathround:。我最初的评论是因为最初的答案是14/20,而不是14/20.0
double exp1 = 14/20.0*100;