新微赢技术网

标题: 为什么结果是这样的? [打印本页]

作者: 熾天使rose    时间: 2009-11-3 02:04
标题: 为什么结果是这样的?
源程序:
#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...
不知道是不是和计算机内部的舍入误差有关.请教了~~~~谢谢!!
作者: bgag    时间: 2009-11-3 02:04
#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;
}
作者: 秋燕子_児    时间: 2009-11-3 02:04
谢谢.可是怎么解释发现如果a=2.2,4.4,8.8,17.6...等1.1的2的次幂的倍数时
输出为2,4,8,16...?
作者: 依ing梦    时间: 2009-11-3 02:04
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.
作者: 爱情tp乞丐    时间: 2009-11-3 02:04
应该是浮点数的存储形式
作者: 風過aiq無痕    时间: 2009-11-3 02:04
谢谢各位!




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2