将 float 传递给 C++ 中的函数似乎会改变精度

Passing float to a function in C++ appears to change precision

这是一个非常菜鸟的问题,但我很想知道这背后的原因: - 如果我调试以下 C++ 代码:

void floatreturn(float i){
      //nothing
}

int main(){
    float a = 23.976;
    floatreturn(a);
    return 0;
}

监听a的传值,输入floatreturn时好像是23.9759998。因此,函数中值的任何处理都需要手动调整精度。这有什么原因吗?有什么办法可以避免吗?

问题发生在 floatreturn(a);.
之前 它发生在 float a = 23.976;
floatreturn(a); 无关紧要。

float 可以精确编码大约 2^32 个不同的值。 23.976 不是其中之一。最近的可编码 float 大约是 23.9759998...

为避免这种情况,请使用可以准确编码为 float 的值或容忍接近 - 大约 224

中的 1 个部分