从long到float的可能有损转换

时间:2016-05-10 14:16:29

标签: java android

我知道这是一个愚蠢的问题。想知道代码是如何工作的。

代码1:

float a =123L;

这里,即使数字123L是长类型(8字节)而浮点数a(4字节),我也没有将编译时错误视为“可能有损转换”

代码2:

long c=123.0D;

这里即使double和long类型是8个字节,我仍然得到“可能有损转换”编译时错误。

我在想,存储在变量中的值应该是Type兼容的。

1 个答案:

答案 0 :(得分:0)

浮点数据类型代表非常接近的近似值,具体取决于数字本身和系统,精度等。因此,如果将例如340L转换为浮点数,则可能例如表示为339.999而不是340.

整数和浮点表示完全不同,这就是为什么你会收到关于可能的精度损失的警告,因为整数表示一个精确的数字,而不像包含尾数的浮点数。