Re: [請益] 變數亂跑

看板Fortran作者 (講不聽)時間16年前 (2008/11/29 10:34), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
真要硬用原本來寫的話要這樣 ※ 引述《LightRoach (雪花飄)》之銘言: : 最近有一個問題實在是困擾我很久 : 所以上來請教大家囉~ : 我的 fortran 程式 program MAIN implicit none integer II real*8 T : do II=0, T do II=0, int(T) ....... ....... enddo write(*,*) 'II=', II end program : 當然被迴圈包住的裡面做了很多事 : 包括 call 一些 subroutine : 讓我很困擾的是 : 我多加 write(*,*) 'II=', II 竟然看到 II 不是介於 0~T之間的值 : 可能是很大(5位數以上)的整數 正負都有可能 原因很簡單 T記憶體用浮點數格式 但在迴圈時編譯器將他當成整數格式 所以讀出來的數字是錯的 舉例浮點數格式類似 +5.0 = 1 100000 00000001 正負 0.5 10^1 但用整數來讀會變成 2^16+2^15+2^0 = 65536+32768+1 以上格式我亂掰的 但差不多是這樣 寫程式時嚴謹點吧,迴圈的變數要習慣用整數 內文有需要用到II和T再轉成浮點數用 用float(for real*4)或dfloat(for real*8)轉過去 : 雖然迴圈仍然很神奇地會停住 Orz : 有人有發生過這樣的情況嗎? 建議要怎麼解決呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.98.153

11/29 10:38, , 1F
感謝大家的意見!!! 我來改改看 XD
11/29 10:38, 1F

11/30 04:58, , 2F
原PO是我同學嗎XD
11/30 04:58, 2F

12/01 16:00, , 3F
Yes
12/01 16:00, 3F
文章代碼(AID): #19CAeikZ (Fortran)
討論串 (同標題文章)
文章代碼(AID): #19CAeikZ (Fortran)