[問題] 浮點數 round-off error

看板Programming作者 (SahsB)時間10年前 (2014/11/17 19:56), 10年前編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
用8-bit form 當例子(not IEEE standard) 假設對下面兩個浮點數進行加法 1 110 1011 <- a (-11/4) +) 0 100 1101 <- b (13/16) _____________ 那在把 b 的指數對齊 a 的過程中 會得到 0 110 0011 還是 0 110 001101? #即 round-off error 會發生在運算的過程中嗎? #還是運算不受 mantissa 只有四位的限制? 假如是前面的 那算出來會是 -2.0 如果後面就變成 (-15/8) 這樣答案就不一樣了 請問實際上會是哪一種 有跟浮點數比較熟的板友可以幫忙一下下嗎QQ? 先謝謝了~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.196.109 ※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1416225415.A.8AC.html

11/17 21:04, , 1F
沒記錯 IEEE-754 的規定是計算中不能損失
11/17 21:04, 1F

11/17 21:04, , 2F
計算後才進行適當的進捨位
11/17 21:04, 2F

11/17 21:05, , 3F
也就是你的第二選項
11/17 21:05, 3F
感謝~ 所以在計算過程中 浮點數的mantissa可以超過四位囉? (32 bit form 的話超過23位?) ※ 編輯: SahsB (140.112.196.109), 11/17/2014 21:50:34

11/18 09:32, , 4F
以x86來說float double只是儲存格式
11/18 09:32, 4F

11/18 09:32, , 5F
計算的時候全部轉成80bit
11/18 09:32, 5F

11/18 09:32, , 6F
fpu裡頭只有一種格式
11/18 09:32, 6F
文章代碼(AID): #1KQUA7Yi (Programming)
文章代碼(AID): #1KQUA7Yi (Programming)