gpt4 book ai didi

c - 理解 c 中的 float 有问题。为什么它会进入无限循环?

转载 作者:行者123 更新时间:2023-12-04 10:55:32 25 4
gpt4 key购买 nike

我正在尝试更新我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com