我知道这是一个愚蠢的问题。想知道代码是如何工作的。
代码1:
float a =123L;
这里,即使数字123L是长类型(8字节)而浮点数a(4字节),我也没有将编译时错误视为“可能有损转换”
代码2:
long c=123.0D;
这里即使double和long类型是8个字节,我仍然得到“可能有损转换”编译时错误。
我在想,存储在变量中的值应该是Type兼容的。
答案 0 :(得分:0)
浮点数据类型代表非常接近的近似值,具体取决于数字本身和系统,精度等。因此,如果将例如340L转换为浮点数,则可能例如表示为339.999而不是340.
整数和浮点表示完全不同,这就是为什么你会收到关于可能的精度损失的警告,因为整数表示一个精确的数字,而不像包含尾数的浮点数。