我正在尝试更新我的 C 知识,但我遇到了 float 错误。
例如这个循环将是无限的:
#include <stdio.h>
int main(){
for (float i =18000000; i<18000002; i++){
printf("%f\n", i);
}
printf("win\n");
return 0;
}
为什么会这样?..
最佳答案
float
的精度有限。假设它在 IEEE754 单精度浮点中实现,它只有 24 位精度,或大约 7 个十进制数字。
数字 18000000 可以用这种格式精确表示,但 18000001 不能,因此加 1 会导致低端的额外位被四舍五入或截断,从而得到值 18000000。所以你得到一个无限循环。
关于c - 理解 c 中的 float 有问题。为什么它会进入无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57854489/