Azzera filtri
Azzera filtri

Why is this if statement does not work?

4 visualizzazioni (ultimi 30 giorni)
if (oval1x ~= sObjVal1(1) || oval1x ~= sObjVal1(end))
cd=1;
else
cd=Inf;
end
it happened that oval1x=4.2139; and sObjVal1(1)=4.2139; but the loop did not work correctly
Edit: is there a way to correct this issue?

Risposta accettata

madhan ravi
madhan ravi il 20 Feb 2020
Modificato: madhan ravi il 20 Feb 2020
Because they are float numbers, reading the below links might help you better about floating numbers:
You could add tolerance to satisfy the conditions , search inside the forum with the tag "floating point" you would find lots of explanations about it.
  2 Commenti
Cantor Set
Cantor Set il 20 Feb 2020
I don't understand
madhan ravi
madhan ravi il 20 Feb 2020
Modificato: madhan ravi il 20 Feb 2020
because maybe oval1x is not exactly 4.2139 if you use sprintf('%.32f',oval1x) you could see that its not exactly the same value as you think.
An example to illustrate:
>> x = 1.24213
x =
1.2421
>> x == 1.2421 % false
ans =
logical
0
>> (x - 1.2421) < 1e-4 % true where 1e-4 is the tolerance
ans =
logical
1
>>

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by