我在运行单元测试时偶然发现了一些奇怪的MATLAB行为。我收到一些"不正确的"或"不高兴"计算两个数据点的百分比变化时的结果。为了便于说明,请查看以下示例。
test1 = 101/100-1 % test1 = 0.01
tf1 = isequal(test1, 0.01) % tf1 = false
在我的计算机上tf1
是false
,这显然是错误的,因为test1
应该完全等于0.01
。首先,我认为这可能与分裂有关,导致了一个"舍入"错误。
但是,如果您首先避免使用减法(-1),则tf
会变为true
。
test2 = 101/100 % test2 = 1.01
tf2 = isequal(test2, 1.01) % tf2 = true
现在,我有点困惑,我想知道发生了什么?