当前位置: 首页 > 知识库问答 >
问题:

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

隆功
2023-03-14

我正在尝试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个答案

公冶嘉
2023-03-14

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

裴焱
2023-03-14

这是Java过度敷衍了事。

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

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

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

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

 类似资料:
  • 我有一个问题,我必须把公里转换成英里。我是一个新手程序员,所以请原谅我。 这是我到目前为止的代码: 它给我一个错误提示:

  • 为什么我得到的错误,我如何修复它? 如您所见,在声明变量时,我已经尝试将替换为顶部附近的,但它似乎不起作用。

  • 问题内容: 我已经定义了数组gx,数组arr为短型。但是为什么左边的运算可能会以int类型结束,而我必须将其转换为short?编译器错误可能是从int到short的有损转换。 这是我的代码。 } 那是因为所谓的拆箱吗?因此,这意味着我每次进行手术时都需要进行投射吗? 问题答案: 它不是开箱;这是“二进制数值提升”。 JLS的第5.6.2节规定: 当运算符将二进制数字提升应用于一对操作数时,每个操作

  • 我试图用java将十六进制数据写入我的串口,但是现在我不能将十六进制数据转换成字节数组。 以下是显示错误消息的代码: 这是写入串行端口的代码: 我能知道如何解决这个问题吗?目前我正在使用javax.comm插件。谢谢。

  • 所以我最近写了以下代码: 当我尝试使用cmd运行它时,它一直显示以下内容: 有人能帮我解释一下我犯的错误吗?

  • 问题内容: 所以我最近写了下面的代码: 但是,它一直显示: 当我尝试使用cmd运行它时。 有人可以帮助并解释我所犯的错误吗?任何帮助表示赞赏:)。谢谢! 问题答案: 当您转换到,值的精度损失。例如,当您将4.8657(double)转换为int时,int值将为4.Primitive 不存储十进制数字,因此您将丢失0.8657。 在您的情况下,0.7是一个双精度值(除非提到float-0.7f,否则