我不知道你是否认为这是一个重要的问题,但我想知道。 float 是 float (4 个字节)。 double 是 float (8 个字节)。 为什么我们定义 double 而不进行转换:
double d = 2.1;
但是我们需要使用 float 进行转换:
float f = (float) 2.1;
或
float f = 2.1f;
提前谢谢您。
最佳答案
默认情况下,Java 编译器将 2.1 视为 double 型(64 位),而不是浮点型(32 位)。声明 float f=2.1 会导致精度损失。因此,Java 强制您进行转换以确保您声明的是浮点变量。
无需转换,您可以使用 float 末尾的字母“f”来实现相同的效果。例如, float f=2.1f
。
现在您可能会问,为什么在从 long 转换为 float 时不需要进行强制转换,因为前者在内部使用的位数多于后者。答案是 Java 不需要在加宽路径上进行转换 - byte => Short => int => long => float => double。 (从左到右(扩大转换)- 不需要强制转换; 从右到左(缩小转换)- 需要显式转换)
关于Java:为什么我们需要转换 float 而不是 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069115/