| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2807 人关注过本帖
标题:来自C语言初学者的疑惑???
只看楼主 加入收藏
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
 问题点数:0 回复次数:11 
来自C语言初学者的疑惑???
程序代码:
#include<stdio.h>
int main()
{
    float i;
    scanf("%f",&i);
    i=i/10000.0;
    if(i<=10)
        i=i*0.1;
    //i=i*10000;//当注释掉这条语句时,所得出的结果乘一万就是正确结果,但是当使用这条时直接是错误结果。
    printf("%f\n",i);
}

例如:输入10000,注释时,结果为0.1然后自行乘一万就为正确结果;非注释时,结果为1000.000015,计算结果直接错误。
请问为什么会出现这种情况????
搜索更多相关主题的帖子: C语言 注释 结果 错误 printf 
2017-08-05 23:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
0.1的二进制形式是什么?它是有限的不循环小数吗?
2017-08-06 01:00
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
回复 2楼 rjsp
为二进制的无限循环小数
2017-08-06 01:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 3楼 双翼天使
那你还有什么疑问吗?
2017-08-06 10:34
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
回复 4楼 rjsp
那应该怎样实现0.1*10000呢
2017-08-06 13:59
为什么召唤我
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-8-6
收藏
得分:0 
i=i*1呢
2017-08-06 15:37
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
回复 2楼 rjsp
而且当0.1乘1;0.1*10;0.1*100;都是正确答案,但是0.1*1000以上答案都是错误的
2017-08-06 16:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用双翼天使在2017-8-6 16:37:33的发言:

而且当0.1乘1;0.1*10;0.1*100;都是正确答案,但是0.1*1000以上答案都是错误的

你所谓的“正确”和“错误”是什么呀?
即使是 0.1f,你将后面的小数全部打印出来,它也不全是0
https://
2017-08-06 17:18
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
回复 8楼 rjsp
我找到我的错误在哪儿了,把前面的float更换为double,然后%lf就行了
2017-08-06 17:25
双翼天使
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-8-4
收藏
得分:0 
感谢各位朋友的帮助,受教了,现在问题已经解决,谢谢各位了
2017-08-06 17:25
快速回复:来自C语言初学者的疑惑???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022816 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved