我在将Float值打印到报表时遇到问题。 当我检查对象时,它显示两个值。 我希望当我将此值打印到报表中时,该值将为80.914055。 但它打印80.789055。
该值来自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)。
我对可能发生的事情毫无头绪。
答案 0 :(得分:2)
因为java使用IEE754进行浮点数学运算。这意味着你有时会得到奇怪的东西。
如果精确度非常重要,请使用BigDecimal。有this stuff here的精彩指南。