首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个C++的有关问题

2012-02-04 
一个C++的问题#includeiostream.hvoid main(){double a3.3double b1.1int ca/bcoutcendl}为

一个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; 

热点排行