matlab相同的数字判断为不等

img

img

复数的模的平方应该等于复数乘以其共轭,但是为什么matlab显示逻辑不正确呢?
我也试了很多数据,都不对,后来又用了isequal(),也不对,连十六位精度都是一样的也判断不等?
这是为什么?

isequal()只要是有一点不相等也是不行的,

z = 2+2i
z =
   2.0000 + 2.0000i
>> z1 = abs(z)^2
z1 =
    8.0000
>> z2 = z*conj(z)
z2 =
     8

这两个8虽然都是double类型,但其实精度不同,z2的8才是真正的整数8;
z1:

img

而且如果让他俩相减的话就可以看出具体差多少:

>> z1-z2
ans =
   1.7764e-15

在这里将z1向下取整一下变为整数的double,两者就相等了:

>> isequal(floor(z1),z2)
ans =
  logical
   1

若帮助您解决疑惑,请点击采纳(不是点赞),谢谢合作!