发现下面输出奇怪。真的吗?
double rate = 11/12; // outputs 0.0
double rate = 11.00/12; // outputs 0.916666667;
为什么会有这么大的差异?
答案 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