不同的数据类型操作double-float

我知道,当与Java中的操作符以及不同的数据类型有关时,结果是推广到更大的数据类型 因此,因为double大于float,所以当例如具有不同的数据类型操作double-float

double z=39.21; 

float w=2.1F;

System.out.println(z+w);

结果z + w将是双重类型。 如果我不把浮点数据类型放在F上,那么浮点数假定为双精度浮点数。

那么为什么下面的代码不能编译?

double z=39.21; 

float w=2.1;

System.out.println(z+w);

不应该只是双倍的结果,如果z和w都认为是双重的? 相反,它抛出:

Arithmetic.java:26: error: incompatible types: possible lossy conversion from double to float 

float w=2.1;

^

1 error

此外,当

short x = 14; 

float y = 13;

double z = 30;

System.out.println(x * y/z);

首先,短期被转换成int。然后int被转换为Float。然后发生乘法。

为什么在这种情况下编译,因为我们有一个双精度和浮点数之间的操作没有F ??????

我似乎无法理解这种情况,你能帮助我吗?

回答:

float w = 2.1; // error 

通过默认,2.1是一个双重的文字。

编译器希望从您身边获得一个保证,即您已准备好执行缩小转换,这就是为什么它需要在字面值之后使用F(或f)。

如果您不把F(或f),它会导致编译错误。

float y = 13; // works successfully. 

而在另一种情况下,13是一个整数文字。所以,它很容易进入浮动类型。因此,代码成功运行。

以上是 不同的数据类型操作double-float 的全部内容, 来源链接: utcz.com/qa/257624.html

回到顶部