Re: [問題] 可以判斷整數嗎?

看板Fortran作者 (sjgau)時間14年前 (2010/12/26 09:48), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串4/9 (看更多)
重點是 real*4 rel_diff(a, b) < 1.0e-5 real*8 rel_diff(a, b) < 1.0e-14 那個 e-5, e-14 的數字,是怎麼來的? 答案是:經驗! ※ 引述《sjgau (sjgau)》之銘言: : 我會! : real*4, or real*8 都可以。 : real*4 x, y, z; : x= 16.0 : y= sqrt(x) : iy= int(y + 0.5) : ! int() 還要 查ㄧ下,目的是 把 y 四捨五入, : ! 取最接近的 整數 : if (rel_diff(iy, y) < 1.0e-5) then : ! y 是整數 : else : ! y 不是整數 : end if : ! rel_diff(a, b) 是自己寫的 副程式, 計算 a, b 的相對誤差 : ! 相對誤差等於 = (abs_diff(a, b))/max(abs(a), abs(b)) : ! abs_diff(a, b) 是自己寫的副程式,求 a, b 兩個數字的 絕對誤差 : ! 絕對誤差= abs(a - b) : ※ 引述《pillbox1989 (如履薄冰)》之銘言: : : 我想要確定開方後的值是整數 : : 利用if 判斷 : : 但是一直想不到限制條件可以打甚麼? : : 還是有其他更好的方法呢? : : 謝謝大家 -- e-mail: sjgau4311@gmail.com 我的課程介紹網頁: http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18 AutoCAD 台灣地區菁英講師獲選 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.82

12/26 10:57, , 1F
這個還真不是用經驗, 而是IEEE 743
12/26 10:57, 1F

12/26 10:59, , 2F
12/26 10:59, 2F

12/26 11:15, , 3F
那個東西,是工業標準。但是,在使用上,還是要調整ㄧ下,這
12/26 11:15, 3F

12/26 11:17, , 4F
這是 經驗。real*8 的精確度是 52個 bits, 理論上是
12/26 11:17, 4F

12/26 11:18, , 5F
2^(-52), 但是要取 安全餘域,margine
12/26 11:18, 5F

12/26 11:38, , 6F
fortran裡面的spacing函數就是做這個的
12/26 11:38, 6F
文章代碼(AID): #1D5fxUmB (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1D5fxUmB (Fortran)