---
# System prepended metadata

title: C習題3.46-b
tags: [C習題]

---

# 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

