Java 从双精度到浮点误差的可能有损转换
我在浮点数据类型中取r=7.5。它显示以下错误Java 从双精度到浮点误差的可能有损转换,java,Java,我在浮点数据类型中取r=7.5。它显示以下错误 有人能告诉我为什么它会显示错误吗?Writefloat r=7.5F取而代之7.5F是一个float常量,可以在不损失精度的情况下分配给float变量。在JLS 3.10.2中,定义浮点文字形式: A floating-point literal is of type float if it is suffixed with an ASCII letter F or f;otherwise its type is double and it ca
有人能告诉我为什么它会显示错误吗?Write
float r=7.5F代码>取而代之7.5F
是一个float
常量,可以在不损失精度的情况下分配给float
变量。在JLS 3.10.2
中,定义浮点文字形式:
A floating-point literal is of type float if it is suffixed with an ASCII
letter F or f;otherwise its type is double and it can optionally be suffixed
with an ASCII letter D or d (§4.2.3).
因此float r=7.5
不正确,因为7.5
是双精度的,所以不能将其分配给float类型r
。您可以将其更改为float r=7.5f'或'double r=7.5值7.5
是双精度文本,因此r
值在相乘时提升为双精度。将double存储到变量SI将是一种转换,它将丢失数据,即double到float
要将数据保持为浮点数,请使用浮点数文字,并在程序中所有浮点数变量的末尾加一个f。如果需要帮助,请在此处发布代码。如果不提供文本截图,只需将代码复制并粘贴到问题上即可。此外,图像中显示的代码甚至不是有问题的代码。它位于circle.java的区域。您知道浮点文本在默认情况下是double类型,所以当r是浮点变量时,您会被告知精度损失。这一点也不奇怪。