首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言萊布尼茲級數求 π:精確到小數點后六位的正確實現

     編輯:程式設計疑難解答

公式

π/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...

錯誤代碼分析

用戶代碼輸出 4,原因:整數除法 1/3 結果為 0,級數首項后全為 0,pi=0,乘 4 仍為 0?實際可能因未初始化變量導致輸出 4。關鍵問題:**必須使用浮點數運算**。

正確代碼

#include <stdio.h>
#include <math.h>

int main() {
    double pi = 0.0;
    double term = 1.0;
    int sign = 1;
    int denominator = 1;
    
    // 迭代直到項的絕對值小于 1e-7(保證小數點后 6 位穩定)
    while (fabs(term) > 1e-7) {
        term = sign * 1.0 / denominator;
        pi += term;
        sign = -sign;
        denominator += 2;
    }
    
    pi *= 4;
    printf("pi = %.10f\n", pi); // 3.1415926536
    return 0;
}

關鍵點

  • 變量用 double,字面量 1.0 強制浮點除法。
  • 循環終止條件:項的絕對值 < 目標精度(如 1e-7)。
  • 萊布尼茲級數收斂極慢,需約 500 萬項達到 1e-7,實際工程中常用馬青公式或Chudnovsky 算法加速。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved