[問題] 有關double precision運算式

看板Fortran作者 (Cream)時間9年前 (2015/09/15 02:03), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
hello各位 不好意思又要打擾大家一下了 上次所發問的問題小弟仍然無法完全了解當中出錯的原因 索性直接舉出一段code希望大家可以給些意見 implicit none double precision x,y,r,s x=28.4d+00 y=16.5d+00 r=(y-x)*10.0d+00 s=(y+x)*10.0d+00 print*,r,int(r),s,int(s) end print出來的數字為: -119.000000000000 -118 449.00000000000000 449 我已經很明確給予xy值了,照理說應該不會有所謂的x-y=-118.999999999這類的數字,有人可以提供一下經驗嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.222.152 ※ 文章網址: https://www.ptt.cc/bbs/Fortran/M.1442253814.A.604.html

09/15 02:19, , 1F
輸出r的時候小數點以下多顯示個幾位數,你會有驚喜。
09/15 02:19, 1F

09/15 02:23, , 2F
先別管這些了,你~有聽過浮點數嗎?
09/15 02:23, 2F

09/15 02:30, , 3F
怎麼多輸出後面幾個數字?另外這不是double precision嘛?
09/15 02:30, 3F

09/15 02:31, , 4F
不是代表只提供16的位子存放數字,怎麼還會有後面幾位?
09/15 02:31, 4F

09/15 04:16, , 5F
謝謝G大,我大概知道是什麼原因了
09/15 04:16, 5F

09/15 12:00, , 6F
FYI,gfortran是-118.9999999~14位
09/15 12:00, 6F
文章代碼(AID): #1LzmlsO4 (Fortran)
文章代碼(AID): #1LzmlsO4 (Fortran)