看板 Cad_Cae 關於我們 聯絡資訊
分享個人的經驗 整數的運算結果,絕對沒有誤差。 浮點數的運算結果,一定會有誤差。 double x= 123.456; 儲存在 x 裡面的二進位表示,分別為 一個bit, 表示x的 +/- 11 個bits, 表示x 的二進位次方的數量級 52個bits , 表示 x 的 0.5 - 1.0 的精確度部分 也就是說, 123.456 --> a*b*(2^c) a, b, c 是二進位, 浮點數的比較運算,不能夠直接 if (x == y) then . . . 必須改成 if (rel_diff(x, y) < delta) then . . . rel_diff() 是求 x, y 的相對誤差, rel_diff(x, y) 會等於 abs_diff(a, y)/(max(abs(x), abs(y))) abs_diff(x, y)= abs(x - y); abs(x) 是計算 x 的絕對值 delta 的值,大概是 (10^-14) -- e-mail: sjgau4311@gmail.com 我的課程介紹網頁: http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18 AutoCAD 台灣地區菁英講師獲選 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.195.32 ※ 文章網址: https://www.ptt.cc/bbs/Cad_Cae/M.1464142257.A.DFE.html
comelin99: 感謝大大~這邊高手好的 06/07 12:54