Java中的Float.valueOf(String arg)舍入问题



人,我在我的应用程序中偶然发现了一个基本问题,我试图将字符串值转换为相应的Float值:

Float val = obj.getFloat("220293.43") ;
System.out.println(val);

getFloat((的定义:

Float getFloat(String arg)
{
return Float.valueOf( arg ) ;
}

现在的问题是,当我打印转换后的浮点值时,它会给我:

220293.44  

这显然是不正确的。有人能帮我吗?我读了一些关于这方面的文章,怀疑这个问题是因为float支持4字节数据的能力有限,但我需要确认并解释为什么会发生这种情况。谢谢你抽出时间。

这种行为通常被称为浮点精度问题。并不是所有的实数都能准确地用浮点值表示,因此存在类似您所描述的舍入问题。如果您比较的值看起来相同,但在内部表示中不相同,这尤其奇怪。

浮点运算,精度

在您的情况下是否需要使用Float?

float只有24位精度。

如果您需要浮动值,则必须使用double

最新更新