Why is this if statement does not work?

1 visualización (últimos 30 días)
Cantor Set
Cantor Set el 20 de Feb. de 2020
Editada: madhan ravi el 20 de Feb. de 2020
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?

Respuesta aceptada

madhan ravi
madhan ravi el 20 de Feb. de 2020
Editada: madhan ravi el 20 de Feb. de 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 comentarios
Cantor Set
Cantor Set el 20 de Feb. de 2020
I don't understand
madhan ravi
madhan ravi el 20 de Feb. de 2020
Editada: madhan ravi el 20 de Feb. de 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
>>

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by