Re: [問題] float 精準度觀念問題
※ 引述《Feis (坐吃山空)》之銘言:
: 標題: Re: [問題] float 精準度觀念問題
: 時間: Wed Sep 19 00:13:10 2018
[deleted]
:
: 要透過浮點數做運算時大概有三個步驟
:
: 1. 將要計算的數字轉換成浮點數可精確表示的格子點 (可能產生誤差)
: 2. 對這些在格子點上的數字們做運算
: 3. 將算出來的結果存在浮點數可精確表示的格子點上 (可能產生誤差)
[deleted]
:
: ※ 編輯: Feis (140.122.83.198), 09/19/2018 00:47:44
: 推 cutekid: 大推(Y) 09/19 03:16
: 推 chchwy: 神解答 格子點的解釋很好懂 09/19 08:03
: 推 sarafciel: 推格子點的解釋 09/20 15:14
: 推 lovejomi: 針對那三個步驟,算的時候沒有受到誤差限制反而是算完 09/25 16:59
: → lovejomi: 之後3. 會因為要mapping to ieee754而產生誤差 這邊覺 09/25 16:59
: → lovejomi: 得很神奇 不知道cpu怎麼運算的 09/25 16:59
計算的部份 (2.) 也會有誤差啊
除法除不盡的話本來就一定會有誤差,就算加法乘法這種本來應該可以精確計算
也可能會有誤差
舉例來說,兩個浮點數相乘時,小數以下部份可能會超過浮點數能表示的極限
超過的部份資訊就丟失了,這個部份就是誤差
實務上 CPU 在設計時時會儘量減少計算誤差,作法其實很簡單,就是作弊
例如 x86 系列的 FPU 其實是 80-bit
所以在計算 float (32-bit) 或 double (64-bit) 的過程中就可以保留更多精確位
有興趣的話可以看 IEEE754 extended precision formats 的部份
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.51
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1538106711.A.299.html
※ 編輯: HuangTzHuan (140.112.30.51), 09/28/2018 11:53:06
推
09/28 18:21,
6年前
, 1F
09/28 18:21, 1F
→
09/28 18:21,
6年前
, 2F
09/28 18:21, 2F
→
09/28 18:22,
6年前
, 3F
09/28 18:22, 3F
→
09/28 18:34,
6年前
, 4F
09/28 18:34, 4F
→
09/28 18:34,
6年前
, 5F
09/28 18:34, 5F
→
10/03 02:45,
6年前
, 6F
10/03 02:45, 6F
→
10/03 02:45,
6年前
, 7F
10/03 02:45, 7F
→
10/03 02:46,
6年前
, 8F
10/03 02:46, 8F
→
10/03 02:50,
6年前
, 9F
10/03 02:50, 9F
→
10/03 02:50,
6年前
, 10F
10/03 02:50, 10F
→
10/03 02:50,
6年前
, 11F
10/03 02:50, 11F
→
10/03 02:54,
6年前
, 12F
10/03 02:54, 12F
→
10/03 02:54,
6年前
, 13F
10/03 02:54, 13F
→
10/03 02:54,
6年前
, 14F
10/03 02:54, 14F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章