Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从双精度到浮点误差的可能有损转换_Java - Fatal编程技术网

Java 从双精度到浮点误差的可能有损转换

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

我在浮点数据类型中取r=7.5。它显示以下错误


有人能告诉我为什么它会显示错误吗?

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是浮点变量时,您会被告知精度损失。这一点也不奇怪。