cheonghoi 发表于 2008-11-30 23:09

救救我...一樣number都判斷不出來

在matlab中遇到精度問題,測試過好多情況,為什麼會有下面的情況,精度和數字相等,卻判斷不出來?
function test22
format long
newpoint=0;
x=0.33333
y=vpa(1/3,5)

      if (x==y)
            newpoint=2
      elseif (y~=x)
         newpoint=1
         end
       end

點解ans是
x = 0.333330000000000
y =.33333
newpoint =1
我吾明白?why?
麻煩各位大大救我

friendchj 发表于 2008-11-30 23:13

可以用差的绝对值和一个很小的数比较作为判断条件

ChaChing 发表于 2008-12-1 11:56

数值可以和symbolic比较吗? symbolic我不熟
但改为 if(x==double(y)), newpoint=2, elseif (double(y)~=x), newpoint=1, end 是OK的
建议使用下列较好
if (x-double(y))<=eps, newpoint=2; else newpoint=1; end

cheonghoi 发表于 2008-12-1 23:10

解決了對比的問題,我真是初哥哦.!!!
页: [1]
查看完整版本: 救救我...一樣number都判斷不出來