2015-02-10 80 views
-1

我有一個matlab的問題,我幾乎可以肯定,我已經看到它在某個地方之前,周圍它,但現在我想解決它......當我做一個簡單的計算:Matlab沒有做正確的計算

>> 14336*0.005 

你會得到預期的答案:

ans = 71.6800 

,但使用時長格式:

format long; ans = 71.680000000000007 

它似乎沒有成爲MATLAB一個問題:

ans==71.68 = 1 

但是,如果我做一個詳細的計算:

ans/0.005 = 1.433600000000000e+04 
ans==14336 = 0 
ans-14336 = 1.818989403545856e-12 

做任何人知道解決辦法擺脫1.81e-12的區別原始價值和最終價值?我想這是由於數據類型和東西,但有沒有解決方案?

//盧卡斯

+0

解決方案是什麼?我不認爲你明確說明問題是什麼... – kkuilla 2015-02-10 15:09:56

+1

歡迎來到浮點運算的世界。請參閱我已鏈接的重複答案(爲什麼24.0000不等於24.0000)以獲取更多詳細信息。 – rayryeng 2015-02-10 15:15:50

回答

0

是,解決的辦法是不要做相等測試浮點精度數字。而是將該差值的絕對值與小閾值進行比較(例如eps)。請參閱MATLAB FAQ