小数の足し算の結果が手計算と一致しないのはなぜですか?
18 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 9 Apr 2019
Risposto: MathWorks Support Team
il 9 Apr 2019
小数の足し算の結果が手計算と一致しないのはなぜですか?
例えば、
>> 1 -(0.7 + 0.18 + 0.12)
ans =
1.110223024625157e-16
となります。
Risposta accettata
MathWorks Support Team
il 9 Apr 2019
この結果は、想定されうる動作です。
浮動小数点演算の数値精度の限界から、0.7などの机上の数値に対して、計算機上で厳密な値を扱うことはできません。その結果、計算順序の違いなどにより、手計算とは厳密には異なる結果が生じます。
一般に、倍精度浮動小数点演算(double型)は、10の-15乗程度の誤差が原理的に生じることが知られています。また単精度浮動小数点演算(single型)の場合は、10進数での有効数字は7.225桁であることが知られています。
コンパイラの違いなど、環境変更によって生じる誤差に配慮する場合、このような誤差は許容して運用することで、計算機科学として矛盾のない評価が可能となります。
ディジタル計算機による数値演算では、すべて整数型で計算するときや、2のべき乗など浮動小数点でも厳密な数値が定義できるときなどに限り、手計算と同じ厳密な結果が得られます。
0 Commenti
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!