看板 MATLAB 關於我們 聯絡資訊
各位前輩大大好,小弟新手遇到floating point轉fixed point問題 拜讀先前學長留下資料 fixed_point=(fix(d*2^k))/2^k ; % k為小數點位數 倘若小數點預計取三位,下面範例運算完結果 -1.125~=110.110 (-1.125=110.111) 想請教各位前輩為什麼結果二邊不相等呢? ex. Decimal Binary -1.135456 110.1101110101........ x2^3 x1000 -9.083648 110110.1110101........ fix(-9.083648)=-9 fix(110110.1110101........)=110110 /2^3 /1000 -1.125 110.110 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.90.130 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1452579171.A.FF2.html
sunev: 為什麼-1.135456d=110.1101110101b ? 01/12 22:17
nc23nick: 因為-1.135456d=-2+0.864544d=110.1101110101b,2的補數 01/13 12:44
nc23nick: 還是說不能用2的補數去想>.< 01/13 12:45
sunev: fix兩邊丟掉的東西就不一樣啊.... 01/15 04:37
nc23nick: 那是不是用round比較正確,有爬到有人寫用round的.... 01/18 15:56