通过公式编写π的近似值
通过计算π的公式π/4=1-1/3+1/5-1/7……计算π的值。
- C/C++ code
#include<stdio.h>#include<conio.h>#include<math.h>int main(void){ int s=-1; double t=1,pi=0,n=1; while(fabs(t)>=1e-8) { t=1/(2*n-1); n++; s*=-1; pi+=s*t; } printf("%.8f",pi*4); getch(); return 0;}输出:
以下是书上的代码:
- C/C++ code
#include<stdio.h>#include<conio.h>#include<math.h>int main(void){ double pi=0,t=1,n=1; int s=1; while(fabs(t)>=1e-8) { pi+=t; n+=2; s=-s; t=s/n; } printf("%.8f\n",pi*4); getch(); return 0;}输出:
为什么一个输出的是:3.14159263,一个是3.14159267,最后一位为什么一个是3,一个是7,实现的是相同条件下的相同功能啊???
[解决办法]
在while循环里你是先使用了除法,书上是后使用了除法,因此你的精度误差积累得要大一些。
[解决办法]
举个例子吧
1/3=0.3333......
0.3333....*3=0.999999...
而1*3=3;
3/3=1所以就结果不同
如果在MatlAB中就更明显了