将 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 个部分
这是一个非常菜鸟的问题,但我很想知道这背后的原因: - 如果我调试以下 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