读书人

一个C++的有关问题

发布时间: 2012-02-04 15:43:08 作者: rapoo

一个C++的问题
#include<iostream.h>
void main()
{
double a=3.3;
double b=1.1;
int c=a/b;
cout<<c<<endl;
}
为什么输出结果是2?
还有,如果改为 double c=a/b;结果就变成3了

[解决办法]
将浮点数赋值给整型数,编译器采用截断方式,即
2.999999 --> 2
并不进行四舍五入
受计算机原理限制,浮点数保存到内存中,有精度限制,
题中保存在内存的3.3 != 我们认为的 3.3,可能略小于该数
a/b 的浮点数为2.9999999999...
问题发生了

LZ在使用浮点运算时一定要考虑截断误差,应设法通过优化算法,避免上述问题的发生
[解决办法]
貌似问题出在

C/C++ code
int c=a/b; 

读书人网 >C++

热点推荐