看板 MATLAB 關於我們 聯絡資訊
碰到了個詭異的問題,想問問有沒有人知道是哪裡出問題... >>single(411905856) ans = 411905856 >>single(411905856)+100 ans = 411905952 >>single(411905856)+single(100) ans = 411905952 確認過Workspace裡面沒有single名稱的變數 也確認過沒有非內建的single.m檔案 目前是改回double計算,但想知道是什麼原因 我找好久找不到為什麼 有沒有大大能夠開釋一下? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.105.182.14 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1461127114.A.946.html
name0625: 版本:2016a 04/20 12:39
celestialgod: single只能抓準前七位數 04/20 12:40
name0625: 是因為只有23bit的有效數位嗎? 04/20 12:47
name0625: 所以超過2^23的數字都不準的意思嗎? 04/20 12:48
sunev: 這是內建指令,一些低階的內建指令不一定有m檔 04/20 12:48
sunev: 像plot也沒有m檔 04/20 12:49
name0625: sun大 我是說確認過不是我弄了個single.m導致出錯ˊˋ 04/20 12:54
celestialgod: 是浮點數的有效位數 04/20 12:57
celestialgod: significant digits 04/20 12:58
celestialgod: 你google一下都有相關的訊息,我非資訊出身無法詳細 04/20 12:58
celestialgod: 解釋 04/20 12:58
sunev: 直接打"help 指令" 就可以知道是不是內建指令,這是最直接 04/20 13:01
sunev: 的方法。不小心將變數指令拿來當變數名稱用,也常常是詭異 04/20 13:02
sunev: bug的原因。像是alpha beta gamma其實都是內建指令。 04/20 13:03
name0625: 好喔,大概了解了,謝謝兩位 04/20 13:04
clang: 浮點數有效位數問題 04/24 22:18