如果我加上括号,为什么输出会有所不同

时间:2019-04-23 07:03:59

标签: java casting parentheses

嗨,我只是想知道为什么

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

打印出0.25

但是

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

打印出0.0

3 个答案:

答案 0 :(得分:9)

前者首先将1强制转换为double,然后进行浮点除法。

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

Java中的规则是,如果两个操作数都是整数,则运算是整数除法;如果任何一个操作数是浮点的,就是浮点除法。

答案 1 :(得分:4)

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

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

答案 2 :(得分:-1)

确保1或4是double。声明:

var分子= 1.0