永发信息网

double i; for(i = 0; i != 10; i += 0.1) printf("%.1lf\n", i); 输出结果为何是死循环?

答案:4  悬赏:20  手机版
解决时间 2021-04-27 19:08
double i; for(i = 0; i != 10; i += 0.1) printf("%.1lf\n", i); 输出结果为何是死循环?
最佳答案
为什么要用i!=10,用i<10不行吗,c语言中double类型数据计算是有误差的,也就是说你每次加0.1,可能永远得不到整10,有可能是0.900001追问谢谢!我最开始也想到了这个问题——浮点数的陷阱,根本不可能精确到10。然后我将i的中间结果输出来,居然是10.0。既然有误差,为什么还要输出10.0?看来,有时不能问为什么,计算机就那样。改为:for(i = 0; i-10 < 0.01; i += 0.1),就正确地看到结果了。这是刘汝佳《算法竞赛入门经典》中的一道题。
全部回答
看错了,呵呵
符点数除去2的N次方外,其他的数都是近似值,如0.1,所以i永远不会等于10.
你打出的10.0并不是10.0,是因为你用的%.1lf输出的原因,你换作%.100lf输出试一下!看看结果是什么。
i是不整形,i第次加0.1,不可能等于10,面是10.000000
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么叫PMI
为什么做不了情人也不要做朋友?
怎么样能不发脾气◎
请问什么时候世界第三次大战爆发?
现在跑黑车,万一被抓到怎么罚款的?
急! 浙江卫视周末下午电视剧播放接的是周五
深圳平湖劳动局的号码?
如果胃疼、并且吃什么吐什么还能活多长时间、
为什么CS1.6看不见自己建的服务器 解决追加!
也许幸福真的很短暂!英文翻译急
小时代3.0刺金时代8月连载出来没呀,在哪可以
农业二队我想知道这个在什么地方
带有青山的诗句,形容青山绿水,心情好的句子
数控刀片ccmt09t304gk啥意思
什么最美作文700字
推荐资讯
表示没钱不安的句子,有钱朋友看不起没钱朋友
alone是哪个学校毕业的
纪念圆明园罹难150周年筹委会于 2010年10月18
因不服法院判决,到法院大吵会罚款多少钱
怎么我付了帐买的衣服在我的物品里没有啊
铁在元素周期表中的位置
可以用自己的照片做为QQ秀么?
憨宝阁宠物店在哪里啊,我有事要去这个地方
第二志愿被录取的可能大吗??
厉害了,看牛人如何自制一台净水器
求 创世的大天使op,gundam某代歌曲暴雨中の光
为什么我的胃治不好?为什么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?