浮点数减去后不是预期的数

5Yr*_*DBA 5 java

我有以下声明:

float diff = tempVal - m_constraint.getMinVal();
Run Code Online (Sandbox Code Playgroud)

tempVal被声明为浮点型并且getMinVal()返回浮点值。

我有以下打印输出:

diff=0.099999905,tempVal=5.1,m_constraint.getMinVal()=5.0

我预计差异0.1,但不是上面的数字。怎么做?

Fra*_*ank 4

浮点数使用IEEE754来表示数字,该系统存在一些舍入误差。

浮点指南

每个计算机科学家都应该了解的浮点运算知识

维基百科上的 IEE754

如果你正在做算术并且需要精确,底线不要使用floatordouble而是使用BigDecimal