Why is this if statement does not work?

조회 수: 1 (최근 30일)
Cantor Set
Cantor Set 2020년 2월 20일
편집: madhan ravi 2020년 2월 20일
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?

채택된 답변

madhan ravi
madhan ravi 2020년 2월 20일
편집: madhan ravi 2020년 2월 20일
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
Cantor Set
Cantor Set 2020년 2월 20일
I don't understand
madhan ravi
madhan ravi 2020년 2월 20일
편집: madhan ravi 2020년 2월 20일
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
>>

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by