人,我在我的应用程序中偶然发现了一个基本问题,我试图将字符串值转换为相应的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