小数の足し算の結果が​手計算と一致しないの​はなぜですか?

18 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2019 年 4 月 9 日
回答済み: MathWorks Support Team 2019 年 4 月 9 日
小数の足し算の結果が手計算と一致しないのはなぜですか?
例えば、
>> 1 -(0.7 + 0.18 + 0.12)
ans =
1.110223024625157e-16
となります。

採用された回答

MathWorks Support Team
MathWorks Support Team 2019 年 4 月 9 日
この結果は、想定されうる動作です。
浮動小数点演算の数値精度の限界から、0.7などの机上の数値に対して、計算機上で厳密な値を扱うことはできません。その結果、計算順序の違いなどにより、手計算とは厳密には異なる結果が生じます。
一般に、倍精度浮動小数点演算(double型)は、10の-15乗程度の誤差が原理的に生じることが知られています。また単精度浮動小数点演算(single型)の場合は、10進数での有効数字は7.225桁であることが知られています。
コンパイラの違いなど、環境変更によって生じる誤差に配慮する場合、このような誤差は許容して運用することで、計算機科学として矛盾のない評価が可能となります。
ディジタル計算機による数値演算では、すべて整数型で計算するときや、2のべき乗など浮動小数点でも厳密な数値が定義できるときなどに限り、手計算と同じ厳密な結果が得られます。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

タグが未入力です。

製品


リリース

R2017a

Community Treasure Hunt

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

Start Hunting!