嗨,我只是想知道为什么
System.out.println((double) 1/4);
打印出0.25
但
System.out.println((double) (1/4));
打印出0.0
前者首先将1
投射到double
,然后进行浮点划分。
后者首先执行(1/4)
作为整数除法,然后将结果转换为double
。
Java中的规则是如果两个操作数都是整数,则操作是整数除法;如果任何操作数是浮点数,那么它是浮点除法。
表达式(double) 1/4
等于((double) 1)/4
。也就是说,它将整数值1
转换为浮点值1.0
,并将该浮点值除以4
,从而得到0.25
。
表达式(double) (1/4)
首先使用整数进行除法。这导致整数值0
,然后将其转换为double
。
确保1或4是双倍。宣言 :
分子= 1.0