人们, 我在应用程序中偶然发现一个基本问题,试图将字符串值转换为对应的Float值:
Float val = obj.getFloat("220293.43") ;
System.out.println(val);
getFloat()的定义:
Float getFloat(String arg)
{
return Float.valueOf( arg ) ;
}
现在的问题是,当我打印转换后的float的值时,它给了我:
220293.44
这显然是不正确的。谁能帮我这个忙,我读了一些有关此事,并怀疑问题是由于float支持4字节数据的能力有限而引起的,但是我需要确认并解释为什么会发生这种情况。谢谢您的时间
答案 0 :(得分:0)
该行为通常称为浮点精度问题。并非所有的实数都可以用浮点值精确表示,因此存在一些舍入问题,如您所描述的那样。如果您要比较内部表示形式中看起来相同但不相同的值,则尤其奇怪。
Floating-point arithmetic, Accuracy
您是否需要使用Float?
答案 1 :(得分:0)
float仅具有24位精度。
如果需要浮点值,则必须使用double