我已执行此代码,但它无法正常工作:
A = 1:0.1:1.4
A =
1.0000 1.1000 1.2000 1.3000 1.4000
A == 1.3000
ans =
0 0 0 0 0
我以为我会得到:
ans =
0 0 0 1 0
为什么不起作用?我怎样才能让它按照我的意愿运作?
谢谢。
答案 0 :(得分:6)
比较花车时通常会这样。试试A(4)-1.3
。它会给你一些小而不是零的东西。那是因为浮点数具有有限的精度。一般来说,最好不要用浮点数来测试相等性。
通常的方法是定义一个小容差(例如1e-9
)并比较考虑该容差:
abs(A-1.3)<1e-9
答案 1 :(得分:1)
0.1具有无限扩展: 0.000110011001100110011001100110011001100110011001100110011001100
shell代码获取:
bc -lq
obase=2
1/10
Matlab将截断为50(?)位。因此,0.1 * 3和0.3是不同的。
答案 2 :(得分:0)
这是因为双精度。试试format long g
然后再看看A,你会发现它不是1.3。看看MATLAB wiki,了解其原因。对浮点数进行相等测试永远不是一个好主意。