[問題] 傳回一個等於或大於的最小整數

看板Fortran作者 (雅痞Mark杯)時間9年前 (2015/05/22 20:46), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/1
如題所示 我採用彭國倫P635頁的CEILING x3=-5.17E+15 z=x3+20 h=CEILING(ABS(z)/40) write(*,*) ABS(z)/40 , h 銀幕出現 ABS(z)/40=1.295E+14 (正確) 然而 h=-2.147E+9 數字根本不對@ @ 是因為數值太大時 所導致的錯誤嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.155.140 ※ 文章網址: https://www.ptt.cc/bbs/Fortran/M.1432298775.A.DCD.html

05/23 00:38, , 1F
overflow了,把h宣告成real*8試試看 real*8 :: h
05/23 00:38, 1F

05/23 10:28, , 2F
有哦!我每一個變數都是 kind=8
05/23 10:28, 2F

05/23 14:11, , 3F
CEILING的回傳值不是一個整數嗎? 為什麼要宣告成real
05/23 14:11, 3F

05/23 17:24, , 4F
CEILING(ABS(z)/40,8)
05/23 17:24, 4F

05/24 00:18, , 5F
想問樓上8的意思是什麼?
05/24 00:18, 5F

05/25 10:27, , 6F
傳回的數值是integer(8) 預設應該是integer(4)所以會
05/25 10:27, 6F

05/25 10:27, , 7F
overflow
05/25 10:27, 7F
文章代碼(AID): #1LNoKNtD (Fortran)
文章代碼(AID): #1LNoKNtD (Fortran)