设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 186|回复: 5
打印 上一主题 下一主题

为什么结果是这样的?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 02:04:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源程序:
#include <iostream>
using namespace std;

int main()
{
double a=3.3;
double b=1.1;
int c;
c=a/b;
cout<<c<<endl;
system("pause");
return 0;
}

上述程序输出为2,不知道是为什么.我又试了其他的,发现如果a=2.2,4.4,8.8,17.6...等1.1的2的次幂的倍数时
输出为2,4,8,16...但是其他的时,如3.3,5.5,6.6,7.7..时,输出为2,4,5,6...
不知道是不是和计算机内部的舍入误差有关.请教了~~~~谢谢!!
2#
发表于 2009-11-3 02:04:33 | 只看该作者
#include <iostream>
using namespace std;

/**
2.9999999999999996000
2
Press any key to continue . . .
*/
int main()
{
double a=3.3;
double b=1.1;
int c;
printf("%.19f\n", a/b);
c=a/b;
cout<<c<<endl;
system("pause");
return 0;
}
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 02:04:34 | 只看该作者
谢谢.可是怎么解释发现如果a=2.2,4.4,8.8,17.6...等1.1的2的次幂的倍数时
输出为2,4,8,16...?
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-3 02:04:38 | 只看该作者
if you really want to know how things work inside a computer, you need to know how numbers are represented in the memory.

IEEE standard for floating-point numbers is a good starting point.

I think it is IEEE 754.
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-3 02:04:40 | 只看该作者
应该是浮点数的存储形式
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-3 02:04:41 | 只看该作者
谢谢各位!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 05:59 , Processed in 0.104932 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表