Java int与double的除法
为什么在Eclipse上运行时答案为0?我期望(int)5/2=2,通过去掉0.5左边的属性。然后(double)5/2=2.5,所以2-2.5=-0.5。问题是您在除法后已转换为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
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