if(0.41 == (41*0.01)) is False and if(0.42 == (42*0.01)) is True .. Why?
1 回表示 (過去 30 日間)
古いコメントを表示
In following script, I am getting 'false' for first condition and 'true' for second condition.
clc
clear all
if(0.41 == (41*0.01)) %First Condition
disp('true')
else
disp('false')
end
if(0.42 == (42*0.01)) %Second Condition
disp('true')
else
disp('false')
end
2 件のコメント
Stephen23
2020 年 7 月 30 日
The effect of accumulated error with binary floating point numbers is very well documented:
This is worth reading as well:
採用された回答
KSSV
2020 年 7 月 30 日
Read about comparing floating-point numbers.
tol = 10^-5 ;
if(abs(0.41-(41*0.01)<=tol)) %First Condition
disp('true')
else
disp('false')
end
if(abs(0.42 - (42*0.01))<=tol ) %Second Condition
disp('true')
else
disp('false')
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Image Data Workflows についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!