Re: [問題] 小數點某位數後去掉已回收

看板MATLAB作者 (大頭)時間13年前 (2010/09/14 01:51), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《stma (BBS)》之銘言: : 標題: [問題] 小數點某位數後去掉 : 時間: Sat Sep 11 23:35:12 2010 : : 小數點後某位數都去掉 有這個指令嗎 : : 因為在做運算時有時候顯示 a=4.1011 : 但實際若用4.1011去比較 a 則是不相等的 : : 有辦法將a小數點五位數之後 或是某位數之後全部拿掉嗎 : : 不然每次比較都是不等於蠻困擾的 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.113.106.203 : 推 bighead319:只顯示 a=4.1011,後面沒顯示出來,這個可以設定 09/12 01:02 : → bighead319:至於把某位數後面全部拿掉 a=floor(a*10^4)/10^4 即可 09/12 01:03 : → stma:感謝big大的技巧分享 09/12 13:38 : 推 waveken:也可以先用vpa 在用double 09/12 15:55 : → stma:突然發現1F方法有bug 運算後有時會被省略數字 09/13 23:21 : → stma:http://ppt.cc/Boa7 跑出來像這樣 09/13 23:29 : 推 sunev:這叫numerical error吧 09/13 23:51 : → stma:恩 爬文/floor 有人有類似情況 難道真的只能寫function來避免 09/13 23:55 那不是方法有bug,那是你沒搞清楚matlab顯示的問題,基本上matlab預設 是顯示到小數點後面第四位,但他在顯示時會顯示出四捨五入的結果, EX: 你輸入 a = 1.739999,按enter後 他會顯示 a = 1.7400 所以你會誤以為他是1.74,但實際上,a這個變數在matlab裡的儲存值 依舊是 1.739999,不是1.7400。 所以才會發生你圖片中所謂的 "error",你可以輸入 format long, 讓matlab顯示到小數點後面14位,或是設定你需要的顯示位數, 詳細的請自己使用 help。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.232.204

09/14 02:59, , 1F
應該是你沒看懂他要問的 ! ok啦 小問題 !
09/14 02:59, 1F

09/14 23:18, , 2F
原因是這樣沒錯啊,他圖片中的 d(20,20)的輸出
09/14 23:18, 2F

09/14 23:19, , 3F
ans = 9.8261,但事實上,ans儲存的值可能是 9.8260xxx
09/14 23:19, 3F

09/14 23:21, , 4F
所以他的 floor(ans*10^4)/10^4 = 9.8260
09/14 23:21, 4F

09/14 23:22, , 5F
那把上面的值減去9.8261,得到-1.0e-4沒錯吧
09/14 23:22, 5F

09/14 23:24, , 6F
叫原PO在command window打format long之後不就知道了~
09/14 23:24, 6F
文章代碼(AID): #1CZcIQ0A (MATLAB)
文章代碼(AID): #1CZcIQ0A (MATLAB)