| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:输入输出问题
只看楼主 加入收藏
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
结帖率:0
收藏
 问题点数:0 回复次数:6 
输入输出问题
#include<stdio.h>
int main(void)
{
    float a;
    scanf_s("%f",&a);
    printf("The input %f or %e", a, a);
    return 0;
}
 我输入21.29 为何 输出是21.290001?
搜索更多相关主题的帖子: return 
2015-07-10 10:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
浮点数储存就是这样

授人以渔,不授人以鱼。
2015-07-10 10:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
你是不是认为你输入任何实数,那么float就能保持任意实数?
实数有无限个,float只有4bytes,你用有限的资源就能存储无限的信息?

将全世界所有的硬盘拿出来,将其中所有的数据连接起来组成一个超大的整数,然后用1.0除以这个超大数得到一个小数,将这个小数赋值给一个float变量。
你看,一个float变量就可以存储全世界所有硬盘中的信息。

对于代码 float a = 21.29f;
在编译器/程序严重,就是 float a = 21.29000091552734375f;
2015-07-10 10:43
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
浮点误差

一片落叶掉进了回忆的流年。
2015-07-10 10:45
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
收藏
得分:0 
回复 3楼 rjsp
如果要显示21.290000该如何操作?
2015-07-10 11:32
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
#include<stdio.h>
int main(void)
{
    float a;
    scanf_s("%f",&a);
    printf("The input %g or %e", a, a);//把%f改成%g或改成%.6f
    return 0;
}
2015-07-10 11:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用li362490567在2015-7-10 11:32:53的发言:

如果要显示21.290000该如何操作?
看你这话,肯定是还没明白问题所在呀。
简单的说,它的值本就不是21.290000,你为什么要它显示为一个不正确的21.290000呢?

2015-07-10 16:28
快速回复:输入输出问题
数据加载中...
 
   



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

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