0

我无法解释这一点。我有两个具有相同值的变量,但它们并不相同。谁能告诉我我在这里缺少什么?

>> y
y =
3.4000
>> x
x =
3.4000
>> y==x
ans =
 0
>> whos x
 Name      Size            Bytes  Class     Attributes
 x         1x1                 8  double              
>> whos y
 Name      Size            Bytes  Class     Attributes
 y         1x1                 8  double   

这对我来说真的很令人费解,我发誓这不是一个玩笑。

4

2 回答 2

5

这是因为浮点精度。尝试

format long g

然后再x看一遍y。最好与x-y一些小的公差值进行比较,而不是对浮点数进行相等性测试

于 2013-07-26T09:25:31.120 回答
3

您正在比较浮点值,由于计算机处理浮点值的方式,这种活动基本上与您在任何语言中的想法都不太一样。

对此的解决方案通常是测试值之间的差异是否小于某个小阈值。

有关此问题的 Matlab 相关讨论,请参见此处

于 2013-07-26T09:26:01.070 回答