java双号分区给出奇怪的输出

时间:2015-06-05 13:52:45

标签: java

发现下面输出奇怪。真的吗?

double rate =  11/12; // outputs 0.0

double rate = 11.00/12; // outputs 0.916666667;

为什么会有这么大的差异?

1 个答案:

答案 0 :(得分:4)

在第一种情况下,完成第一次除法,因此int除以int给出一个整数,即11/12 = 0然后该整数转换为double .ie,0.0。在第二种情况下,双精度(11.00)除以整数(12)。然后整数12自动类型转换为双精度,因为除以类似的类型进行除法。这个除法给出了一个实际上精确的双重值(0.916666667)

请参阅此链接https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html