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/52069115/

相关文章:

ios - 字符串双重故障排除

flutter - 如何在 dart 中将 double 值四舍五入到小数点后两位?

java - 如何修复 boolean 方法中的返回错误

java - 在 Hibernate 中更新表时出现 "Not mapped"异常

c++ - 同时转换位宽和有符号/无符号,首先执行哪个转换?

c++ - 从 Complex* 到 double 的无效转换

C++ 所有类的公共(public)基指针向上转型、向下转型和侧转型

java - 以编程方式调用 button.click() 后,GWT FileUpload form.submit() 不起作用

java - 在构建类时更改类名称后如何修复 ClassNotFoundException

java - double用二进制科学计数法不能准确表示,Java如何精确显示?