| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 584 人关注过本帖
标题:库函数的BUG???
收藏  订阅  推荐  打印
hellbelial
Rank: 1
等级:新手上路
帖子:33
积分:494
注册:2008-4-29
库函数的BUG???

今天无聊发现的printf的一个问题。
代码:
程序代码:
#include <stdio.h>

int main()
{
    float f = 0;
    while(scanf("%f", &f) != EOF)
        printf("%.2f\n", f);
    return 0;
}
运行结果:
附件: 只有本站会员才能下载或查看附件,请您 登录注册
搜索更多相关主题的帖子: BUG  函数  
2008-5-13 22:55
qinxinhai
Rank: 3Rank: 3
来自:湖南长沙
等级:中级会员
帖子:237
积分:2562
注册:2008-4-27

楼主你发现什么了哦!
本来就会四舍五入的
还BUG???

我秀我自己
2008-5-13 22:58
qinxinhai
Rank: 3Rank: 3
来自:湖南长沙
等级:中级会员
帖子:237
积分:2562
注册:2008-4-27

3.225
变3.22
也可能是库函数运行的机理不明白

我秀我自己
2008-5-13 23:00
sunkaidong
Rank: 12Rank: 12Rank: 12
来自:南京师范大学
等级:版主
威望:4
帖子:4129
积分:44849
注册:2006-12-28

你输入的3.225其实是比3.225小的..所以被舍掉了,调试下就知道了

学习需要安静。。海盗要重新来过。。
2008-5-13 23:04
hellbelial
Rank: 1
等级:新手上路
帖子:33
积分:494
注册:2008-4-29

为什么3.335,甚至其它的3.XX5就正常?
2008-5-13 23:27
f319
Rank: 1
等级:新手上路
帖子:25
积分:380
注册:2008-5-13

我试了下
输入     输出
3.225--->3.22
3.335--->3.34
3.445--->3.44
3.555--->3.56
3.665--->3.66
3.235--->3.23
3.325--->3.33
3.435--->3.43
3.345--->3.35

原因不明.
2008-5-13 23:34
netsolo
Rank: 3Rank: 3
等级:中级会员
帖子:118
积分:2062
注册:2008-3-6

郁闷了,
看来我得看看关于计算机的浮点数在内存中的存储方式的资料了
3.225
3.22            0x404e6666
3.225001
3.23            0x404e666b
3.2250001
3.23            0x404e6667
33.2250001
33.22           0x4204e666
33.225001
33.23           0x4204e667
333.22501
333.23          0x43a69ccd
333.225001
333.23          0x43a69ccd
3.2250001
3.23            0x404e6667
333.2250001
333.23          0x43a69ccd
3.22500001
3.22            0x404e6666
333.22500001
333.23          0x43a69ccd

[ 本帖最后由 netsolo 于 2008-5-14 08:27 编辑 ]
2008-5-14 08:24
netsolo
Rank: 3Rank: 3
等级:中级会员
帖子:118
积分:2062
注册:2008-3-6

找到一篇关于浮点数的文章
http://blog.csdn.net/khler/archive/2007/08/17/1749102.aspx
2008-5-14 09:31
zhuwei168
Rank: 2
来自:东软信息学院
等级:注册会员
帖子:180
积分:1914
注册:2008-2-13

我问老师了
老师说和机子和编译器的环境有关的
像VC就会四舍五入
Tc貌似是直接删除后面的一段吧
2008-5-14 17:48
netsolo
Rank: 3Rank: 3
等级:中级会员
帖子:118
积分:2062
注册:2008-3-6

你们老师真是“毁人不倦”啊
2008-5-14 18:12
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.048174 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved