2 qq 34418970 qq_34418970 于 2016.04.21 13:17 提问

求PI,为什么结果不对,还是逻辑上是错的?
c#

double n=3;
double PI;
double s=1/n;
double sum=1/3;
do
{

           sum = sum + s;
            n = n + 2;
            PI = 4 *(1-sum);
        }
        while (s < 0.000001);
        Console.WriteLine(PI);*/

1个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.04.21 13:34
先理解算法
 double n=3;
            double PI;
            double s=1/n;
            int i = 1;
            double sum=1;
            do
            {
                i = i * -1;
                s = 1 / n; 
                sum = sum + s*i;
                n = n + 2;
            }
            while (s > 0.000001);
            PI = 4 * sum;
            Console.WriteLine(PI);
qq_34418970
qq_34418970 想了好久,还是想不明白,自己的意识上感觉是对的,还有题目上不是说1/n<0.000001时停止计算?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言代码,求高手解答,为什么没有错误,但是结果不对
#include #include char *cmonth(int month) { char str_month[]={ "Illegal Month" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November"
用格雷戈里公式求π的近似值
#include #include main() {  int denominator,flag;  double item,pi;  flag,denominator=1,item=1.0,pi=0;  while(fabs(item)>=0.0001){         item=flag*1.0/denominator;         pi=pi+flag;
多线程计算pi效率对比分析
继续昨天的计算pi的程序 分配不同的线程数量得到的不同的运行时间对比 可以看到很明显的 从一个线程变成两个线程确实时间减少了一般左右,但是继续增加线程数量却不怎么影响结果。这是因为我电脑的CPU型号为Intel 酷睿i3 370M,双核四线程 ,所以双线程的程序已经占用了全部的系统资源了。为了证明这个观点,请看下图: 分别是线程数为1、2、3、4时的运行CPU记录
1067 例题5-7 求圆周率pi的近似值
题目描述用如下公式求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不累加)。要求输出的结果总宽度占10位,其中小数部分为8位。程序中使用浮点型数据时,请定义为双精度double类型。如果需要计算绝对值,可以使用C语言数学库提供的函数fabs,如求x的绝对值,则为fabs(x).输入无输出PI=圆周率的近似值输出的结果总宽度占10位,其中小数部分为8位。末尾输出换行。样例输入无样例...
Spark实例演示之SparkPi
1.贴上源码 def main(args: Array[String]) { val conf = new SparkConf().setAppName("Spark Pi").setMaster("spark://hadoop1:7077").setJars(List("/home/kaiseu/MyProject/IdeaProjects/week2/out/artifacts/week2
Linux多线程计算Pi函数(互斥没起作用???)
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <sys/time.h>pthread_mutex_t mutexsum; #define thread_count 4 double sum;void* start_thread(void *rank);void* start_thread(void *ra
Linux下多线程通过蒙特卡洛法来求取pi值
特卡洛法又称随机抽样技术 是一种应用随机数进行仿真试验的方法。 用该方法计算π的基本思路是:  根据圆面积的公式: s=πR2 ,当R=1时,S=π。  由于圆的方程是:x2+y2=1(X2为X的平方的意思),因此1/4圆面积为X轴、y轴和上述方程所包围的部分。  如果在1*1的矩形中均匀地落入随机点,则落入1/4园中的点的概率就是1/4圆的面积。其4倍,就是圆面积。 由于半径为1,该
**基础题1、**通过键盘输入声明初始值一个圆柱体的高和底面半径,PI值是3.14,求圆柱体的体积,并显示输出圆柱体的体积;V=π(r^2)h。
基础题1、通过键盘输入声明初始值一个圆柱体的高和底面半径,PI值是3.14,求圆柱体的体积,并显示输出圆柱体的体积;V=π(r^2)h。 double PI = 3.14; Scanner scan = new Scanner(System.in); System.out.println("请输入圆柱体的高:"); double h =
计算圆周率π(PI)
求圆周率π(PI),可填写计算位数,输出结果。
【蓝桥杯】算法提高 7-2求arccos值
利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,x取值范围是[-1, 1],返回值为[0, PI]。要求结果准确到小数点后5位。(PI = 3.1415926)   提示:要达到这种程度的精度需要使用double类型。