为什么浮点数可以是整数而不抛出异常?
Why can a float be an integer without throwing an exception?
为什么会抛出异常:
float var1 = 24.0;
System.out.print(var1);
但事实并非如此:
float var1 = 24;
System.out.print(var1);
我知道,在第一种情况下,我需要在数字末尾添加“f”以区别于双精度数字。但我不明白为什么编译器在没有小数点的情况下跳过“f”没有问题。我认为即使我将变量声明为浮点数,Java 也可能将其视为 int,但 ((Object)var1).getClass().getName()
结果为 0java.lang.Float
.
24.0
是 double
文字,不能自动(隐式)转换为 float
。 24
是一个 int
文字,所以你在这里看到的是从 int
到 float
.
的 widening primitive conversion
为什么会抛出异常:
float var1 = 24.0;
System.out.print(var1);
但事实并非如此:
float var1 = 24;
System.out.print(var1);
我知道,在第一种情况下,我需要在数字末尾添加“f”以区别于双精度数字。但我不明白为什么编译器在没有小数点的情况下跳过“f”没有问题。我认为即使我将变量声明为浮点数,Java 也可能将其视为 int,但 ((Object)var1).getClass().getName()
结果为 0java.lang.Float
.
24.0
是 double
文字,不能自动(隐式)转换为 float
。 24
是一个 int
文字,所以你在这里看到的是从 int
到 float
.