[問題] 請問這是Bug嗎??關於偵測小數位數已回收

看板MATLAB作者 (效應)時間16年前 (2009/11/28 10:20), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串1/1
其實類似問題在 #17TW--Ga 就有提到了 似乎是肇因於在Matlab中例如 3.000 不等於 3 使得我寫的一個檢查小數位數的小程式會出現不同結果: ============================== clear all; A=2.03; A1=A; N1=0; A2=A; N2=0; while mod(A1,1)~=0 A1=A1*10; N1=N1+1; end while mod(A2*10^N2,1)~=0 N2=N2+1; end ============================== 理論上上面的計算結果N1、N2應該要一樣,都是代表 A 的小數位數 但是算出來竟然出乎意料,有時候兩個都對,有時候都錯,有時候一個對一個錯 列出幾個運算結果在下面:( "答" 表示我希望出現的正確答案) A=2.1 2.11 2.33 2.01 N1 1 16 2 16 N2 1 2 2 16 答 1 2 2 2 下面這組我覺得比較有意思 A=2.555 2.5550 2.55 2.550 2.5500 2.1100 N1 3 3 2 2 2 16 N2 3 3 3 3 3 2 答 3 3 2 2 2 2 請問這算是Bug嗎?? 感覺誰會對誰會錯乍看之下好像沒什麼規律 ex:(2.5500) V.S (2.1100) 順便問一下有沒有什麼指令是直接就能偵測小數位數的? 有的話就直接拿來用,多方便阿 XD 再不然我目前能想到的就是直接 num2str(A) 然後找出小數點的位置,最後一個非零小數的位置 再決定出位數了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.68.64

11/28 10:55, , 1F
考慮向教育育建議將數值誤差列入高中數學教程
11/28 10:55, 1F

11/28 12:52, , 2F
浮點數誤差要解釋也是點花點時間的
11/28 12:52, 2F

11/28 22:09, , 3F
計概不是會教一些?
11/28 22:09, 3F
文章代碼(AID): #1B48ZInH (MATLAB)