Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java int与double的除法_Java_Int_Double - Fatal编程技术网

Java int与double的除法

Java int与double的除法,java,int,double,Java,Int,Double,为什么在Eclipse上运行时答案为0?我期望(int)5/2=2,通过去掉0.5左边的属性。然后(double)5/2=2.5,所以2-2.5=-0.5。问题是您在除法后已转换为double: int x=5, y=2; System.out.println(x/y-(double)(x/y); (double)(x/y) 整数除法仍在进行,因此结果与x/y相同,减法得到0 在除法之前将x强制转换为double,以强制进行浮点除法: int x=5, y=2; System.out.pri

为什么在Eclipse上运行时答案为0?我期望(int)5/2=2,通过去掉0.5左边的属性。然后(double)5/2=2.5,所以2-2.5=-0.5。

问题是您在除法后已转换为
double

int x=5, y=2;
System.out.println(x/y-(double)(x/y);
(double)(x/y)
整数除法仍在进行,因此结果与
x/y
相同,减法得到
0

在除法之前将
x
强制转换为
double
,以强制进行浮点除法:

int x=5, y=2;
System.out.println(x/y-(double)(x/y);
(double)(x/y)

请注意,缺少用于平衡表达式的括号。假设您将其更正为:

((double) x / y)
5/2的整数除法用括号括起来,因此发生在转换为double之前

如果你有这个

int x=5, y=2; System.out.println( x/y - (double)(x/y) );
还是这个

int x=5, y=2; System.out.println( x/y - (double) x/y );
你会得到-0.5,因为在每种情况下,对double的转换都发生在除法之前的分子或分母上,而除法不会发生在两个整数之间,结果是double