我是参考这个Oracle文档的。在尝试执行以下操作时:
public static void main(String args[]){
float f = 1.1f;
double df = 1.1f;
System.out.println("f=" + f);
System.out.println("df=" + df);
f = 1.5f;
df = 1.5f;
System.out.println("f=" + f);
System.out.println("df=" + df);
}
输出结果为
f = 1.1
df = 1.100000023841858
f = 1.5
df = 1.5
第二行输出为什么显示的是近似值,但第四行不是呢?这个值是如何计算出来的?
1.1f
是一个float
字面量,将其赋值给double
可能会产生误导。 - Eel Leedf
是这个1.500000000000000
实际的值,零被省略了。 - mangusta1.1f
打印为double
时,类型具有更高的精度,因此需要更多的数字来使其不含糊地表示出所需的double
。请参见https://dev59.com/HnNA5IYBdhLWcg3wjOpS。 - Pascal Cuoq