Re: [請益] 變數亂跑
真要硬用原本來寫的話要這樣
※ 引述《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
11/29 10:38, 1F
→
11/30 04:58, , 2F
11/30 04:58, 2F
→
12/01 16:00, , 3F
12/01 16:00, 3F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章