|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 对float输入输出的疑惑
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1958
人关注过本帖
标题:
对float输入输出的疑惑
只看楼主
加入收藏
云清f淡
来 自:江苏南京
等 级:
新手上路
帖 子:7
专家分:0
注 册:2011-1-15
结帖率:
100%
楼主
收藏
已结贴
√
问题点数:20 回复次数:15
对float输入输出的疑惑
#include<stdio.h>
int main()
{
float f;
scanf("%6f",&f);
printf("6f\n",f);
return 0;
}
如果输入的是1.2的话,输出结果是1.200000.这没错;
但是输入的是123.1的话,输出结果是123.099998,这就有点不理解了,按照我的理解也应该为123.100000才对。
求解释....
搜索更多相关主题的帖子:
return
2011-01-16 10:31
举报帖子
使用道具
赠送鲜花
cnfarer
等 级:
版主
威 望:
179
帖 子:3330
专家分:21157
注 册:2010-1-19
第
2
楼
收藏
得分:3
你输入的十进制数,而内存中存储的是二进制数。
★★★★★
为人民服务
★★★★★
2011-01-16 10:41
举报帖子
使用道具
赠送鲜花
逐渐学习
等 级:
侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
第
3
楼
收藏
得分:5
#include<stdio.h>
int main()
{
float f;
double df;
scanf("%f",&f);
df=f;
printf("%f\n",f);
printf("%lf",df);
return 0;
}
输入123.1
输出123.099998
123.099998
以下是百度大叔提供的:
对于浮点型double和long double,有相应的转换说明符(%f表示双精度型,%lf表示长双精度型),而float却没有。其中的原因是,在K&RC下,float值用于表达式或用作参数前,会自动转换成double类型。而ANSI C一般不会自动把float转换成double。有些程序已假定其中的float参数会被转换成double,为了保护大量这样的程序,所有printf()函数的float参数还是被自动转换成double型。因此,在K&RC或ANSI C下,都无需用特定的转换说明符来显示float型。
帮人《---》帮己
2011-01-16 10:53
举报帖子
使用道具
赠送鲜花
云清f淡
来 自:江苏南京
等 级:
新手上路
帖 子:7
专家分:0
注 册:2011-1-15
第
4
楼
收藏
得分:0
回复 3楼 逐渐学习
明白了 谢谢 ...
2011-01-16 11:21
举报帖子
使用道具
赠送鲜花
huangapple
等 级:
青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
第
5
楼
收藏
得分:2
这样跟你讲吧,float在内存中与他表示的数不是一一对应的。你想下float占4个字节,但表示的数超过了2^63个。所以会出点小错。。。具体的情况楼主还得查查相关资料,讲得会比较详细专业
勤能补拙,熟能生巧!
2011-01-16 11:32
举报帖子
使用道具
赠送鲜花
点线面
来 自:NO.-1
等 级:
蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
第
6
楼
收藏
得分:0
听说为什么浮点有误差,就是因为是CPU有BUG,CPU对浮点支持不怎样好,所以尽可能用整形为好
小代码,大智慧
2011-01-16 11:38
举报帖子
使用道具
赠送鲜花
cacker
该用户已被删除
第
7
楼
收藏
得分:4
提示:
作者被禁止或删除 内容自动屏蔽
2011-01-16 11:57
举报帖子
使用道具
赠送鲜花
qq1023569223
来 自:湖南科技大学
等 级:
贵宾
威 望:
26
帖 子:2753
专家分:13404
注 册:2010-12-22
第
8
楼
收藏
得分:2
#include<stdio.h>
int main()
{
float f;
scanf("%f",&f);
printf("%.6f\n",f);
return 0;
}
唯实惟新 至诚致志
2011-01-17 02:14
举报帖子
使用道具
赠送鲜花
A13433758072
来 自:广东潮州
等 级:
小飞侠
威 望:
1
帖 子:1182
专家分:2784
注 册:2010-7-22
第
9
楼
收藏
得分:2
输入能规定精度吗?#include<stdio.h> int main() { float f; scanf("%6f",&f); printf("→_→6f\n",f);//不报错吗? return 0; }
[
本帖最后由 A13433758072 于 2011-1-17 07:55 编辑
]
一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入, QQ群38490319
2011-01-17 07:54
举报帖子
使用道具
赠送鲜花
sunmingchun
来 自:安徽-滁州
等 级:
业余侠客
帖 子:198
专家分:277
注 册:2010-4-2
第
10
楼
收藏
得分:2
回复 9楼 A13433758072
我的编译器不报错,可是这种写法是不准确的。标准是不可以的。
2011-01-17 23:26
举报帖子
使用道具
赠送鲜花
16
1/2页
1
2
快速回复:
对float输入输出的疑惑
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.028503 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved