我无法理解为什么在Java中你可以为float值赋一个double值,例如:
float number=456.7F;
但你不能对整数和浮点数做同样的事情,例如:
int numb=56798434L;
在C ++中这些东西似乎有效。
答案 0 :(得分:4)
456.7F
字面值不是double
值,而是float
值。双后缀是d
(或没有后缀),它也会产生编译错误:
float f = 456.7d;
Java始终要求对数字转换进行显式转换,这可能会导致溢出或精度损失。
答案 1 :(得分:0)
如果没有强制转换,您无法将具有较高容量的类型的值分配给较低容量的类型。 long
可以存储更大的数字,因此无法将其分配给int
。