C++语言遇到的困难

来源:百度知道 编辑:UC知道 时间:2024/06/23 02:23:24
群论坛首页 > 讨论版 > 浏览帖子 <<返回 | 下一帖 对于不同c++写法为什么会不同呢
拼命三郎 2009-12-04 17:33:20 回复 转载到 家庭终极399班俊友-南华人09新生群★流╰*氓帮.oоО杭州兄弟创业联盟4群南华09新生群疯狂英语109南华09计算机励志协会ZONE399宜章老乡南华职业协会软件2班移动到 讨论版 讨论版 置顶 锁帖 修改 删除
第一种写法:
#include<iostream>
using namespace std;
int main()
{double sum=0;
double b;
double j;
int n;
for(n=1;n<=1000;n++)
{b=2*n-1;
if(n%2==0)
j=-4/b;
else
j=4/b;
sum=j+sum;
}
cout<<"sum is"<<sum<<endl;
return 0;

}
第二种方法:

#include<iostream>
using namespace std;
int main()
{double sum=0;
double j;
int n;
for(n=1;n<=1000;n++)

if(n%2==0)
j=-4/(2*n-1);
else
j=4/(2*n-1);
sum=j+sum;
}
cout<<"sum is"<<sum<<endl;
return 0;

}

为什么这两种方法得到的结果不一样呢?????????????????

原因如下:第一种写法的b被声明为double类型,所以b=2*n-1;
这步操作将(2*n-1)隐式转换为double型了,而第二种算法j=-4/(2*n-1);
分母依然是整型,因此两种写法所生成的结果是不同的,区别就在这里。

楼上说的对,只要把 4 改成 4.0 或者将b声明为int 结果就会一样了