Java JShell从double到float的可能有损转换

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集合必然是可能的

我在尝试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

由于可能的
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
。在过去的好日子里,编译器会假设程序员知道他们在做什么。在过去的好日子里,编译器会假设程序员知道他们在做什么。