int和double的分界

Dar*_*win 0 java double int

int x=5, y=2;
System.out.println(x/y-(double)(x/y);
Run Code Online (Sandbox Code Playgroud)

当我在Eclipse上运行它时,为什么答案为0?我希望通过削减0.5左边的属性(int)5/2 = 2.然后(双)5/2 = 2.5,所以2 - 2.5 = -0.5.

rge*_*man 11

问题是你double在分裂之后就已经投入了:

(double)(x/y)
Run Code Online (Sandbox Code Playgroud)

整数除法仍然存在,因此结果x/y与减法产生相同0.

铸造xdouble 之前的划分,强制浮点除法:

((double) x / y)
Run Code Online (Sandbox Code Playgroud)