我想了解以下两者之间的区别:
我收到的第一个答案是0.5,但第二个答案是0.0。 提前谢谢。
System.out.print((double)1/2);
System.out.print((double)(1/2));
我收到的第一个答案是0.5,但第二个答案是0.0。 提前谢谢。
(double)(1/2)
首先计算 1/2
,由于是整数除法,结果为 0
,然后将结果强制转换为 double
类型(得到 0.0
)。
(double)1/2
首先将 1
强制转换为 double
类型,然后执行浮点数除法,即 1.0/2
或 1/2.0
,结果为 0.5
。
(double) (1/2)
,其中(1/2)
被计算为0
,因为1和2是整数,小数部分被截断。先计算1/2
。
(double) 1/2
与((double)1)/2
相同,它将返回一个双精度答案,因此小数部分不会被截断。
1.0/2.0
为了完整起见 ;) - luk2302