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

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.
>>

 採用された回答

Star Strider
Star Strider 2017 年 12 月 22 日

3 投票

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 件のコメント

Graham
Graham 2017 年 12 月 22 日
Thanks!
Star Strider
Star Strider 2017 年 12 月 22 日
My pleasure!
A further illustration:
Test = C - D
Test =
-1.110223024625157e-16

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

その他の回答 (1 件)

Geoff Hayes
Geoff Hayes 2017 年 12 月 22 日

1 投票

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.

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

質問済み:

2017 年 12 月 22 日

コメント済み:

2017 年 12 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by