什么是 Java 中的 float?

我写了这段代码:

float b = 3.6;

我得到了这个:

Error:Unresolved compilation problem:
Type mismatch: cannot convert from double to float

为什么? float的定义是什么?

441718 次浏览

Make it

float b= 3.6f;

如果浮点文字的后缀是 ASCII 字母 F 或 f,那么它的类型是 float; 否则它的类型是 double,并且可以选择后缀是 ASCII 字母 D 或 d

问题是十进制数默认是双倍。而且因为 double 不适合 float 你必须明确地告诉我们你有意定义了 float。那就这样吧:

float b = 3.6f;

在 Java 中,当输入十进制数为 3.6时,它将被解释为 doubledouble是一个64位精度的 IEEE754浮点数,而 float是一个32位精度的 IEEE754浮点数。由于 float不如 double精确,因此不能隐式地执行转换。

If you want to create a float, you should end your number with f (i.e.: 3.6f).

有关详细说明,请参阅 Java 教程的基本数据类型定义

在 JAVA 中,值如:

  1. 8.5
  2. 3.9
  3. (and so on..)

假定为 双倍而不是 漂浮

为了解决这个问题,您还可以执行强制转换:

float b = (float) 3.5;

另一个解决办法:

float b = 3.5f;