学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 11 12
发新话题
打印

库函数的BUG???

库函数的BUG???

今天无聊发现的printf的一个问题。
代码:
复制内容到剪贴板
代码:
#include <stdio.h>

int main()
{
    float f = 0;
    while(scanf("%f", &f) != EOF)
        printf("%.2f\n", f);
    return 0;
}
运行结果:
附件: 您所在的用户组无法下载或查看附件

TOP

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

TOP

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

TOP

你输入的3.225其实是比3.225小的..所以被舍掉了,调试下就知道了
学习需要安静。。海盗要重新来过。。

TOP

为什么3.335,甚至其它的3.XX5就正常?

TOP

我试了下
输入     输出
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

原因不明.

TOP

郁闷了,
看来我得看看关于计算机的浮点数在内存中的存储方式的资料了
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 编辑 ]

TOP

找到一篇关于浮点数的文章
http://blog.csdn.net/khler/archive/2007/08/17/1749102.aspx

TOP

我问老师了
老师说和机子和编译器的环境有关的
像VC就会四舍五入
Tc貌似是直接删除后面的一段吧

TOP

你们老师真是“毁人不倦”啊

TOP

 11 12
发新话题