看板 Fortran 關於我們 聯絡資訊
真要硬用原本來寫的話要這樣 ※ 引述《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
LightRoach:感謝大家的意見!!! 我來改改看 XD 11/29 10:38
Jing1118:原PO是我同學嗎XD 11/30 04:58
agody:Yes 12/01 16:00