Java JShell从double到float的可能有损转换
我在尝试Java9特性JShell。我是 无法设置浮点值:Java JShell从double到float的可能有损转换,java,java-9,jshell,Java,Java 9,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 这是Java的过分恶意 文本3.5的类型是一个double,您将其分配给一个float 由于可能的floats集合必然是可能的
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
这是Java的过分恶意 文本
3.5
的类型是一个double
,您将其分配给一个float
由于可能的float
s集合必然是可能的double
s集合的子集,因此在转换时会出现精度损失警告
为了方便起见,请使用3.5f
来表示浮动
文字
但是请注意,
3.5
可以用double
和float
两种格式精确地表示,因此在这种特定情况下,错误是一派胡言。这是因为Java过于挑剔
文本3.5
的类型是一个double
,您将其分配给一个float
由于可能的float
s集合必然是可能的double
s集合的子集,因此在转换时会出现精度损失警告
为了方便起见,请使用3.5f
来表示浮动
文字
但是请注意,
3.5
可以用double
和float
精确表示,因此在这种特定情况下,错误是一派胡言。这是Java的行为(如现有答案所述)。JShell严格遵循Java语法和语义——这一点很重要,这样您就不会开发错误的代码。这就是Java的行为(如现有答案中所述)。JShell严格遵循Java语法和语义——这一点很重要,这样您就不会开发错误的代码。尝试3.5f
赋值并搜索从double到float的有损转换
问题是什么?请记住,在Java中,3.5
是一个double
文本。等效的float
literal是3.5f
。尝试3.5f
分配值并搜索从双精度到浮点的有损转换,问题是什么?请记住,在Java中,3.5
是一个double
文本。等价的float
literal是3.5f
。在过去的好日子里,编译器会假设程序员知道他们在做什么。在过去的好日子里,编译器会假设程序员知道他们在做什么。