簡體   English   中英

試圖計算Pi

[英]Trying to calculate 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為什么? 我找不到我犯的錯誤。

在聲明中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 / (2 * j - 1)

/兩個操作數都是int類型,因此它執行整數除法,它會截斷該小數。 如果要執行實際除法,請確保至少有一個操作數具有浮點類型。 您可以通過寫作輕松實現此目的

1.0 / (2 * j - 1)

包含小數點(不帶后綴)的數字常量在C中為double類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM