【C語言細節】計算自然對數的底 e遇坑

問題

在這裏插入圖片描述

代碼

#include <stdio.h>
#include <math.h>
int main() {
    double a = 2,y;
    long int n=1;
    do{
        y=a;
        n+=1;
        a=pow(1+1/(double)n,(double)n);
    }while(a-y>1e-6);
    printf("e = %f\nn = %ld\n",a,n);
    return 0;
}
}

結果

在這裏插入圖片描述

注意

在我寫代碼時,遇到了一個坑。題目中括號跟你講的n爲充分大的正整數,當然是要定義long int n;那麼問題來了,pow()函數的原型是:double pow(double x,double y);因此n需要進行強制轉換類型纔可以正確輸出結果。同時printf()中的格式轉換爲%ld

發佈了59 篇原創文章 · 獲贊 44 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章