试图计算Pi

时间:2018-04-20 10:13:31

标签: c pi

要计算Pi,您可以使用等式pi / 4 = 1-(1/3)+(1/5) - (1/7)+ ... 乘以4,你得到Pi 我创建了一个公式来计算方程相对于其位置1 /(2n-1)的每一步并为其编写代码

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) 
{
    double p = 0;
    double pi = 0;
    int j = 1;

    do 
    {
        if (j % 2 == 1)
        {
            p = p + (1 / (2 * j - 1));
        }
        else
        {
            p = p - (1 / (2 * j - 1));
        }
        pi = p * 4;

        printf("%lf\n", pi);

        j++;
    } while (j < 10);

    return (EXIT_SUCCESS);
}

但它只是推出4.0000 为什么?我无法找到我犯的错误。

2 个答案:

答案 0 :(得分:3)

在语句p = p + (1 / (2 * j - 1));中,表达式(1 / (2 * j - 1)以整数形式产生。要获得预期结果,请将操作数设置为浮动类型,即1.0(float)(2 * j - 1)

替换声明

p = p + (1 / (2 * j - 1));/* 1/(2*j-1) results in integer, you won't get expected result */

p = p + (1. / (2 * j - 1));/* 1. means making floating type */

答案 1 :(得分:3)

在你的表达中

1 / (2 * j - 1)

/的两个操作数都属于int类型,因此它执行整数除法,从而截断该小数。如果要执行实际除法,请确保至少有一个操作数具有浮点类型。您可以通过编写

轻松实现此目的
1.0 / (2 * j - 1)

包含小数点(且没有后缀)的数字常量在C中的类型为double