/*
* 完成日期:2018 年 6 月 5 日
* 版 本 号:v1.0
*
* 公式:π/4=1-1/3+1/5-1/7+……+(-1)^(n-1)*(1/(2*n-1))
* 问题描述:求π的近似数,精确到小数点后6位
* 问题分析:主要对(-1.0)*(2*n-3)/(2*n-1)的由来解析一下,初学者看别人代码懵逼时候
*/
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
float sum=0;
float item=1;
for(int n=1; fabs(item)>1e-6; ++n)
{
item*=(-1.0)*(2*n-3)/(2*n-1);
sum+=item;
}
cout<<"Pi = "<<setiosflags(ios::fixed)<<sum*4<<endl;
//iso::fixed 是操作符setiosflags 的参数,是以带小数点的形式表示浮点数
cin.get();
//回车
return 0;
}
解析:
item=item*(-1.0)*(2*n-3)/(2*n-1) 可知道在π/4的数列中,第n项的公式为,第n-1项公式为
item的目的是求出每一项的正确的数值
item=item*(-1.0)*(2*n-3)/(2*n-1) 在里面的item 就相当于 n-1项;我们需要求出第n项,就要 第n项=第n-1项*某个固定值(就是第n项与第n-1项的关系)程序输出结果: