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

小数の足し算の結果が手計算と一致しないのはなぜですか?
例えば、
>> 1 -(0.7 + 0.18 + 0.12)
ans =
1.110223024625157e-16
となります。

 采纳的回答

0 个投票

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

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

产品

版本

R2017a

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!