gpt4 book ai didi

C 和类型转换 - 为什么这个程序在 6 处停止?

转载 作者:太空狗 更新时间:2023-10-29 15:24:44 25 4
gpt4 key购买 nike

我为我的作业编辑了一个 C 程序,之前没有类型转换,迭代在 i=1 时停止,现在有了类型转换,它在 i=6 时停止。

有什么想法吗?提前致谢!

int main(void)
{

int i = 0;
double d = 0.0;

while ( (i == (int) (d * 10)) && (i < 10) )
{
i = i + 1;
d = (double) (d + 0.1);
printf("%d %lf\n", i, d);
}

printf("%d %lf\n", i, d);

getch();

return 0;
}

最佳答案

浮点运算是不精确的。值 0.1 不能用二进制 float 精确表示。这里推荐阅读:What Every Computer Scientist Should Know About Floating-Point Arithmetic .

在程序的某个时刻,由于舍入误差,d 变得略小于 i/10,因此您的循环终止。

关于C 和类型转换 - 为什么这个程序在 6 处停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12301801/

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