Re: [問題] 關於fotran數值運算的誤差問題

看板Programming作者 (sjgau)時間18年前 (2006/11/07 05:22), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
※ 引述《jinming.bbs@bbs.wretch.cc (人生=無盡的任務)》之銘言: : 我不懂 fortran : 但可能有兩種原因只顯示 0.00000 : 1.fortran 儲存 real 只用不到 8 bytes(應該不太可能?) : 2.write要設定顯示科學記號表示法 以上 兩個原因都不對 一 fortran 有 五十年的歷史,為了 後向相容的問題 default 的 浮點數處理是 4- bytes 所以, a= 1.000000001 * 1D300 前面的 1.00000001 被當作 4- bytes 浮點數 處理, 所以,精確度 只有 23個 bits 所以,就產生了 後續的問題 : ※ 引述《sjgau.bbs@ptt.cc (sjgau)》之銘言: : > #include "stdafx.h" : > #include <math.h> : > int main(int argc, char* argv[]) : > { : > double a, b, c; : > printf("\nsizeof(c)= %d bytes\n", sizeof(c)); : > a=0.100000000001e300; : > b=0.100000000000e300; : > c= a - b; : > printf("\nc= %25.22le\n", c); : > return 0; : > } : > /* : > sizeof(c)= 8 bytes : > c= 1.0000002832399531000000e+288 : > Press any key to continue : > */ : > 手邊暫時 沒有 fortran 的 compiler : > 先使用 對等的 C 幫你看看 : > 你 看看那個 c 的答案 是否為你 所要的, : > 然後,私下用 e-mail 討論吧 : > sjgau4311@gmail.com : > 這種簡單的問題討論, : > 是會被 公幹的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.34.222.10
文章代碼(AID): #15JwUOCY (Programming)
文章代碼(AID): #15JwUOCY (Programming)