# C習題3.46-b ###### tags: `C習題` ## 題目: > 寫一個程式計算數學常數e的趨近值 ## code: ```c= #include <stdio.h> int main() { int n = 1, k = 1 ; /*n to store n! value, e to store exp value, k as counter*/ float e =1; printf("It will print a Euler's number :\n"); while( k < 10 ) { n = n * k ; /*printf("n = %d\n",n); printf("1/n = %f\n", (float) 1/n);*/ e = e + ( (float)1/n ) ; /*int to float transfer, otherwise below decible will not add in*/ /*printf("e = %.6f\n",e);*/ k = k + 1 ; /*printf("k = %d\n", k);*/ } printf("Euler's number = %.6f\n",e); return 0; } ``` ## 心得 1. 想了有點久以為要用兩個迴圈, 但其實可以只用1個重複結構就可做成 2. 由拉數雖然是無窮累加, 但其實累加到10階乘就很接近平常看到的e = 2.71 3. 卡關的地方在於int做分母計算後的結果要轉換型態為float, 才會被運算進去, 不然都是介於0~1之間的數, 被int認為都是0