|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求π值,说真的,我感觉并不难。把循环节变成语句就成功了。但是难在这一个个坑。这次的坑是:为什么我写的除法不保留小数,网上查,都说除数、被除数有一个使用浮点数或者双精度就可以保留小数的,我尝试着前后都用了小数了,还是不行。用的系统是虚拟机Ubuntu 16.04,06,听说不同的系统会有小的诧异,但是一个系统不应该不会保留小数吧,求教怎么整。
- #include<stdio.h>
- int i=-1;
- float pai, jie,j=1.0;
- int main()
- {
- while (jie>=0.00000001)
- {
- j=j+2.0;
- jie=(float)1.0/j;
- pai=1+i*jie;
- printf("%f ",pai);
- i=-i;
- }
- printf("π约值为%.7f\n",4*pai);
- return 0;
- }
复制代码
这回你的判断又出错了,把每一个 i 都用 printf() 输出会消耗非常巨大的 CPU 时间,实际上,你的代码并没有陷入死循环,一方面,是你把所有的 i 打印到同一行,所有的 i 值都粘到了一起,毫无参考价值,另一方面,用 printf() 打印每一个 i 值非常费时间,结果,没等程序结束,你就断言死循环了,你再运行一下我改的代码看看。
- #include<stdio.h>
- int main(void)
- {
- double pi;
- int d,e,f,k,i=1;
- for(pi=1.0,e=1e8,k=3,f=-1;k<=e;k+=2,f=-f)
- {
- i++ ;
- if(! (i % 100000))printf("%d\n" , i) ;
- pi+=f*1.0/k ;
- }
- printf("pi=%.8lf\n",pi*4);
- return 0;
- }
复制代码
|
|