提问者:小点点

JShell可能的有损转换从双倍到浮动


我正在尝试Java9功能JShell。我无法设置浮点值:

jshell> float b = 3.5 
Error:
|  incompatible types: possible lossy conversion from double to float
|  float b = 3.5;
jshell> float x =2
x ==> 2.0

共2个答案

匿名用户

这是Java过度敷衍了事。

文字 3.5 的类型是双精度型,您将它分配给浮点数

由于可能的< code>float集合必然是可能的< code>double集合的子集,因此会出现转换时精度丢失的警告。

为了简单起见,使用< code>3.5f来表示< code>float文字。

但请注意,3.5 可以精确地用双精度浮点数表示,因此在这种特定情况下,错误是胡扯。

匿名用户

这就是Java的行为(如现有答案所述)。JShell完全遵循Java语法和语义——这一点很重要,这样您就不会开发错误的代码。