如果我包括括号,为什么输出不同

问题描述 投票:1回答:3

嗨,我只是想知道为什么

System.out.println((double) 1/4);

打印出0.25

System.out.println((double) (1/4));

打印出0.0

java casting parentheses
3个回答
9
投票

前者首先将1投射到double,然后进行浮点划分。

后者首先执行(1/4)作为整数除法,然后将结果转换为double

Java中的规则是如果两个操作数都是整数,则操作是整数除法;如果任何操作数是浮点数,那么它是浮点除法。


4
投票

表达式(double) 1/4等于((double) 1)/4。也就是说,它将整数值1转换为浮点值1.0,并将该浮点值除以4,从而得到0.25

表达式(double) (1/4)首先使用整数进行除法。这导致整数值0,然后将其转换为double


-1
投票

确保1或4是双倍。宣言 :

分子= 1.0

© www.soinside.com 2019 - 2024. All rights reserved.