这是一个非常新的问题,但我想知道这背后的原因: -如果我试下面C++编码:
void floatreturn(float i){
//nothing
}
int main(){
float a = 23.976;
floatreturn(a);
return 0;
}
监控所传递的价值,这似乎是 23.9759998 当进入floatreturn. 因此,任何处理的价值在功能需要,以手工调整的精确度。 是有一个原因,以及任何避免方式?
这是一个非常新的问题,但我想知道这背后的原因: -如果我试下面C++编码:
void floatreturn(float i){
//nothing
}
int main(){
float a = 23.976;
floatreturn(a);
return 0;
}
监控所传递的价值,这似乎是 23.9759998 当进入floatreturn. 因此,任何处理的价值在功能需要,以手工调整的精确度。 是有一个原因,以及任何避免方式?
这一问题之前发生的事情 floatreturn(a);
.
这事发生在 float a = 23.976;
floatreturn(a);
是无关紧要的。
大约有2^32个不同的价值观 float
可以编码完全一致。 23.976不是他们中的一个。 最近的编码 float
是关于23.9759998...
避免、使用价值,可以完全作为一个编码 float
或容忍正在靠近-约1部分中的224