array element not equal to equivalent double

4 ビュー (過去 30 日間)
Pierre-Vincent
Pierre-Vincent 2022 年 11 月 15 日
コメント済み: Pierre-Vincent 2022 年 11 月 15 日
I have the following code:
array=0.0001:0.0001:0.6;
x=0.0402
x = 0.0402
y=array(402)
y = 0.0402
test=x==y
test = logical
0
the result of the test is 0 and I really don't understand why... Both are supposed to be double. Can somebody help?
(the final idea is to find the index of X in the array with the find function)

採用された回答

Matt J
Matt J 2022 年 11 月 15 日
編集済み: Matt J 2022 年 11 月 15 日
Because computers cannot do exact math. The difference between x and y beyond the 4th decimal place make this clear:
array=0.0001:0.0001:0.6;
x=0.0402
x = 0.0402
y=array(402)
y = 0.0402
x-y
ans = -6.9389e-18
  2 件のコメント
Matt J
Matt J 2022 年 11 月 15 日
編集済み: Matt J 2022 年 11 月 15 日
Instead, you can do,
array=0.0001:0.0001:0.6;
x=0.0402;
idx=interp1(array,1:numel(array),x,'nearest')
idx = 402
Pierre-Vincent
Pierre-Vincent 2022 年 11 月 15 日
thanks :)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by