看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《bleed1979 (十三)》之銘言: : 其實用內建型別再怎麼逼近都太無趣了,能顯示多少。 : 使用大數計算,我們來逼近e的小數點以下精確1000位以上。 : 在公式e^x = 1 + x + x^2/2! + x^3/3! + x^3/3! + x^n/n! : x代1得到 e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! : 如果n = 4, : 則整理一下會發現 e = (1 + 1/1 * (1 + 1/2 * (1 + 1/3 * (1 + 1/4)))) : 所以只要能算出1/n,使用遞迴就可以解決。 接著你的討論,想問個問題. 計算放到現實總是相當討厭,會碰到具體的限制. 就一般所知道,浮點數 在加減法方面會有一點點不精確性,而在乘除法方面則會因此產生成倍數的不精確. 於是,你將一個 e 遞迴在除法上,則除一次,除二次,除三次, ..., 不精確性一直累積出來. 同樣一個 e, 我可能拆成 1 + 1/1! + 1/2! + 1/3! + ... + 1/n!, 分母先自己乘,因為都是整數所以分母沒有不精確性,然後每項分別除,然後加總. 雖然除了蠻多次,但是因為除法是包含在同一層加法裡頭,所以不精確性比連除好幾次 少很多(吧?). 那麼,請問你解這個問題,該如何檢查先加再除或先除再加的精確性? -- /yau -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.226.35
tropical72:補一下,驗證該程式 100 位, 是無誤的。 05/02 21:44
yoco315:小y寶貝,人家第二行前六個字寫的很清楚 05/02 21:55
yoco315:如果你沒看到,檢查一下你的螢幕..........或是你的眼睛... 05/02 21:56