浮动对象具有两个不同的值

时间:2018-03-13 19:19:57

标签: java

我在将Float值打印到报表时遇到问题。 当我检查对象时,它显示两个值。 我希望当我将此值打印到报表中时,该值将为80.914055。 但它打印80.789055。

Float showing two values

该值来自Fortran中编写的dll。有一种方法可以从dll中检索值并作为Java float返回(80.914055)。

public float getN1(){
    return ttoutn.getCRUICM(0);
};

还有另一个类调用上面的方法。但是使用method.invoke()代替。

Object returnedObject = method.invoke(calculationModule);

使用method.invoke(),原始float包装在一个Float对象中。似乎Float中的值是正确的(80.914055),如上所示。但是一旦你使用System.out.println(),它就会打印为另一个值(80.789055)。

我对可能发生的事情毫无头绪。

1 个答案:

答案 0 :(得分:2)

因为java使用IEE754进行浮点数学运算。这意味着你有时会得到奇怪的东西。

如果精确度非常重要,请使用BigDecimal。有this stuff here的精彩指南。