其實類似問題在 #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