[問題] 關於最大有效位數...

看板Fortran作者 (你要幸福ㄛ...)時間14年前 (2010/04/15 20:44), 編輯推噓3(3011)
留言14則, 4人參與, 最新討論串1/1
各位好...我用的是CVF6.5版本... 最近遇到了一個運算上的問題... Fortran的最大有效位數為16位數... 假設今天有一個很大的整數其位數為10^16... 乘上一個介於0~1之間的小數(精確到小數點後16位數)... 那麼結果的有效位數最多只能精確到個位數...小數點後的值就會有誤差... 如果那很大的整數再大於10^16... 結果的精確位數可能只到十位數甚至只有百位數... 例如:a=10d16 , b=3.d0 , c=7.d0 d=b/c=0.42857142857142854763807... ^(有效精確位數) e=a*d=42857142857142856.00000000 ^(有效精確位數) 即使事先將那很大的值取log轉換運算... 但最後再取回exp後一樣只能精確到個位數(甚至更差)... 不知各位高手...這樣的問題有沒有辦法解決呢?? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.113.185 ※ 編輯: endpeople 來自: 163.13.113.185 (04/15 20:47)

04/15 21:07, , 1F
原po要不要貼部份code來討論看看? 我認為是資料型態混合的
04/15 21:07, 1F

04/15 21:08, , 2F
運算造成的錯誤 講簡單點 單精度和雙精度一起加減乘除
04/15 21:08, 2F

04/15 21:09, , 3F
後面的值就會有問題 因為兩者的資料儲存方式不同
04/15 21:09, 3F

04/15 21:18, , 4F
sorry 沒注意到原po有寫@@ 雙精度的確是準到15位
04/15 21:18, 4F

04/15 21:21, , 5F
那樣是正常的 (上面三行推文當我沒說 鬼打牆)
04/15 21:21, 5F

04/15 22:08, , 7F
使用浮點數最最基本的觀念 by 冼鏡光
04/15 22:08, 7F

04/15 22:09, , 8F
要做數值的人 上一篇文章先讀到懂 問題就少很多 :)
04/15 22:09, 8F

04/15 22:49, , 9F
那篇文章我前幾天有看過了...似乎無法解決我的問題...
04/15 22:49, 9F

04/16 00:23, , 10F

04/16 00:23, , 11F
High-Precision Software
04/16 00:23, 11F

04/16 20:49, , 12F
不知道你是做什麼問題需要這麼準 XD 算PI嗎???
04/16 20:49, 12F

04/16 20:50, , 13F
如果有效位數只要16~20 你可以試著用64bits整數換算
04/16 20:50, 13F

04/16 20:50, , 14F
如果需要很多位數 試試大數運算吧
04/16 20:50, 14F
文章代碼(AID): #1BnmeQDz (Fortran)
文章代碼(AID): #1BnmeQDz (Fortran)