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

Java 如果我包含括号,为什么输出不同,java,casting,parentheses,Java,Casting,Parentheses,嗨,我只是想知道为什么 System.out.println((double) 1/4); 打印出0.25 但是 打印0.0前者首先将1转换为双精度,然后进行浮点除法 后者首先执行1/4整数除法,然后才将结果转换为double Java中的规则是,如果两个操作数都是整数,则运算是整数除法;如果任何操作数是浮点运算,则为浮点除法。前者首先将1转换为双精度,然后进行浮点除法 后者首先执行1/4整数除法,然后才将结果转换为double Java中的规则是,如果两个操作数都是整数,则运算是整数除法;如

嗨,我只是想知道为什么

System.out.println((double) 1/4);
打印出0.25

但是

打印0.0

前者首先将1转换为双精度,然后进行浮点除法

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

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

前者首先将1转换为双精度,然后进行浮点除法

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

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

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

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

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


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

确保1或4为双精度。声明:


var分子=1.0

确保1或4是双精度的。声明:


var numerator=1.0

带括号,它首先执行1/4,两个都是int,然后将结果转换为double。如果没有它们,您首先将1转换为double,然后使用括号执行division,它首先执行1/4,两者都是int,然后将结果转换为double。如果没有它们,您首先将1转换为双精度,然后执行除法
System.out.println((double) (1/4));