作者alexanjou (雅痞Mark杯)
看板Fortran
標題[問題] 傳回一個等於或大於的最小整數
時間Fri May 22 20:46:12 2015
如題所示 我採用彭國倫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
推 physbook: overflow了,把h宣告成real*8試試看 real*8 :: h 05/23 00:38
→ alexanjou: 有哦!我每一個變數都是 kind=8 05/23 10:28
→ rex0707: CEILING的回傳值不是一個整數嗎? 為什麼要宣告成real 05/23 14:11
推 terryys: CEILING(ABS(z)/40,8) 05/23 17:24
→ physbook: 想問樓上8的意思是什麼? 05/24 00:18
推 terryys: 傳回的數值是integer(8) 預設應該是integer(4)所以會 05/25 10:27
→ terryys: overflow 05/25 10:27