2017-11-25 101 views
0

我有以下MATLAB函數:比較級分和小數近似值在Matlab

function in_out = in_or_out(x) 
    sum = 0; 
    for i = 1 : length(x) 
     sum = sum + (x(i) - 1/2).^2; 
    end 

    if sum <= 1/4 
     in_out = 1; 
    else 
     in_out = 0; 
    end 
end 

如果我通過作爲輸入[.8, .1]sum = 0.250000000000000後的for循環終止。然而,if sum <= 1/4檢查失敗並且0被返回(即根據Matlab 0.250000000000000不是<=1/4)。這是爲什麼發生?

回答

1

試試這個:

tol = 0.000001 
if ((sum<(1/4)) || (sum-(1/4))<tol) 
    in_out = 1 
else 
    in_out = 0 
end