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

时间:2018-12-14 06:07:42

标签: java floating-point type-conversion

人们, 我在应用程序中偶然发现一个基本问题,试图将字符串值转换为对应的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字节数据的能力有限而引起的,但是我需要确认并解释为什么会发生这种情况。谢谢您的时间

2 个答案:

答案 0 :(得分:0)

该行为通常称为浮点精度问题。并非所有的实数都可以用浮点值精确表示,因此存在一些舍入问题,如您所描述的那样。如果您要比较内部表示形式中看起来相同但不相同的值,则尤其奇怪。

Floating-point arithmetic, Accuracy

您是否需要使用Float?

答案 1 :(得分:0)

float仅具有24位精度。

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