Very simple 'if' statement with == operator not working

19 visualizaciones (últimos 30 días)
Graham
Graham el 22 de Dic. de 2017
Comentada: Star Strider el 22 de Dic. de 2017
I have some very basic logic that is not working. It's a simple 'if' statement with an '==' operator. Please help.
Program:
%simple_script.m
clear all
A = 0.40;
B = 0.20;
C = 0.60;
D = A + B;
if C == D
disp('It worked.')
else
disp('It did not work.')
end
Command Window:
>> simple_script
It did not work.
>>

Respuesta aceptada

Star Strider
Star Strider el 22 de Dic. de 2017
Welcome to the apparent inconsistencies of floating-point calculations. See the discussion in Why is 0.3 - 0.2 - 0.1 (or similar) not equal to zero? (link) for more informaiton.
Floating point approximations are similar in this regard to decimal 1/3 being approximated as 0.3333... Multiplying by 3 then gives 0.9999..., not 1.
  2 comentarios
Graham
Graham el 22 de Dic. de 2017
Thanks!
Star Strider
Star Strider el 22 de Dic. de 2017
My pleasure!
A further illustration:
Test = C - D
Test =
-1.110223024625157e-16

Iniciar sesión para comentar.

Más respuestas (1)

Geoff Hayes
Geoff Hayes el 22 de Dic. de 2017
Graham - you are incorrectly trying to use equality with floating point numbers. See the Compare Floating-Point Numbers section of determine equality for an example of what to do.

Categorías

Más información sobre MATLAB 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