如何在 Java 中识别数字是浮点型还是双精度型



19.5 如何是一个双精度值。为什么我们需要附加F以使其float?只是想知道我们如何识别一个数字,无论是float还是double.

19.5是Java中的浮点文字。引用自Java语言规范#3.10.2:

如果浮点文本后缀为 ASCII 字母 F 或 f,则其类型为 float;否则,其类型为双精度,并且可以选择用 ASCII 字母 D 或 d 作为后缀。


现在,当我们知道19.5是双精度类型时,让我们看看注释中的示例:

float value = 19.5;

在 java 中从 doublefloat 的转换是一种缩小的原始转换。这种类型的转换应该是显式的。这就是为什么您需要使用类型 float 的浮点文字来摆脱转换的原因

float value = 19.5f;

或明确说明此转换

float value = (float) 19.5;

用于处理向下转换或缩小转换范围。每当将长整型向下转换为 int 或将双精度向下转换为浮点数时,都存在数据丢失的可能性。因此,编译器将强制您指示您确实要执行缩小转换,方法是发出如下编译错误的信号:

float f = 19.5;

因为 19.5 代表双精度,所以你必须明确地将其转换为浮点数(基本上是在缩小转换时签字(。否则,您可以使用正确的后缀来指示该数字确实是浮点数;

float f = 19.5f;

默认情况下 19.5 是双文本,因此要告诉编译器显式将其视为浮点数 ->它使用 f 或 F

最新更新