看板 MATLAB 關於我們 聯絡資訊
請問我在matlab裡面做簡單運算,為何會算出錯的值? 用C++計算就沒這問題@@... >> 13/86400*86400-13 ans = 1.7764e-015 >> 11/86400*86400-11 ans = -1.7764e-015 在換算秒數天數的時候碰到的,我以為我應該會算出0。 請問這種錯誤要怎麼避免??? 希望能知道具體出錯原因,讓我能從程式裡面避開,拜託各位幫幫忙了!!! -- 小明小強是張老師的學生,張老師生日是M月N日,2人都知道張老師生日是下列10組中 的一天,張老師把M值告訴小明,把N值告訴小強,張老師問他們知道他生日是那天嗎? 3/4,3/5,3/8,6/4,6/7,9/1,9/5,12/1,12/2,12/8. 小明說:如果我不知道的話,小強肯定也不知道。 小強說:本來我也不知道,但是現在我知道了。 小明說:哦,那我也知道了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.37.1 ※ 編輯: chen5 來自: 59.120.37.1 (11/26 17:42)
icrtstyle:原因的話,我不確定,不過你可以用括號來區別 11/26 17:53
icrtstyle:13/((86400*86400)-13)像這樣,matlab計算時不容易錯 11/26 17:56
CBET:在 C++ 裡面輸出小數下 20 位,你會看到一樣的結果 11/26 19:07
godswd:加括號也一樣啊,就像樓上講的是浮點數位數的問題 11/26 20:14
godswd:『11/86400*86400』並不等於11.0000,因為預設只給你看四位 11/26 20:15
godswd:你format long之後去看就知道了 11/26 20:18
godswd:最簡單(偷懶)的解決方法就是在相減之前,用round把乘除的 11/26 20:21
godswd:部分掛進去取最接近的整數,這樣答案應該就是你要的了 11/26 20:22
ak075:精度問題,沒有所謂的零 11/26 23:47
tomichy:問題發霉了 試試看用matlab打 sin(pi) 吧 ~~~~ 11/30 13:24