Java:为什么我们需要转换 float 而不是 double ?

标签 java casting double

我不知道你是否认为这是一个重要的问题,但我想知道。 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/60466580/

相关文章:

java - tomcat 离开 time_wait 连接

java - 如何使用泛型类型的构造函数/类型转换

class - Excel VBA : Extract custom class from dictionary

c++ - 计算小数点后的小数位数

java - 如何使用 Apache Commons CLI 解析属性文件和 --help 选项?

java - 了解 Java 接口(interface)原理

Java 小程序 --> ClassNotFound 异常

C# 无法将 T 转换为 T

if-statement - 如何在Kotlin中检查Double值是否为Null或零

c - printf() 是否取决于格式说明符的顺序?