初始化浮点值时出错

Error in initializing a float value

为什么不允许这样做?

float n;
n =  1234567.89;

但这是。

float n;
n =  (float) 12.3456789;

我正在使用 JAVA 8 和 Netbeans 8.0.1。

IDE 下面的快照。

当您将十进制数定义为 1234567.89 时,它被解释为 double

浮点数以字母 f 结尾。你可以定义如下。

float n;
n =  1234567.89f;

Float 是 32 位 IEEE 754 浮点数。 Double 是 64 位 IEEE 754 浮点数。

使用

float n;
n =  1234567.89f;

默认情况下,这会将您的数字声明为浮点值而不是双精度值。

默认情况下,Java 将文字小数解释为 double,因此要输入浮点数,您需要执行以下操作之一:

  1. float n = 1234567.89f;
  2. float n = (float) 1234567.89;

请注意,这样做可能会导致精度下降。

java 在第一行将其视为双精度值。 n = 1234567.89 不是浮动的。 double 是 8 字节,float 是 4 字节。 解决方案是

float n;
n =  1234567.89f;