gpt4 book ai didi

c - 机器的等式测试和精度

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:50 24 4
gpt4 key购买 nike

<分区>

我在 A Book on C -Al Kelley, Ira Pohl 的第 174 页找到了这段代码。

int main()
{
int cnt=0; double sum=0.0,x;
for( x=0.0 ;x!= 9.9 ;x+=0.1)
{
sum=sum +x;
printf("cnt = %5d\n",cnt++);
}
return 0;

它变成了书上所说的无限循环。它没有提到具体原因,只是说这与机器的精度有关。

我修改了代码来检查是否 x=9.9会变成真的,即 x 通过添加以下行达到 9.9

 diff=x-9.9;
printf("cnt =10%d \a x =%10.10lf dif=%10.10lf \n",++cnt,x,diff);

我在输出中得到了以下几行

 cnt =1098   x =9.7000000000  dif=-0.2000000000 
cnt =1099 x =9.8000000000 dif=-0.1000000000
cnt =10100 x =9.9000000000 dif=-0.0000000000
cnt =10101 x =10.0000000000 dif=0.1000000000
cnt =10102 x =10.1000000000 dif=0.2000000000

如果 x 正好达到 9.9,为什么它仍然是一个无限循环?

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