小数の足し算の結果が手計算と一致しないのはなぜですか?
17 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MathWorks Support Team
am 9 Apr. 2019
Beantwortet: MathWorks Support Team
am 9 Apr. 2019
小数の足し算の結果が手計算と一致しないのはなぜですか?
例えば、
>> 1 -(0.7 + 0.18 + 0.12)
ans =
1.110223024625157e-16
となります。
Akzeptierte Antwort
MathWorks Support Team
am 9 Apr. 2019
この結果は、想定されうる動作です。
浮動小数点演算の数値精度の限界から、0.7などの机上の数値に対して、計算機上で厳密な値を扱うことはできません。その結果、計算順序の違いなどにより、手計算とは厳密には異なる結果が生じます。
一般に、倍精度浮動小数点演算(double型)は、10の-15乗程度の誤差が原理的に生じることが知られています。また単精度浮動小数点演算(single型)の場合は、10進数での有効数字は7.225桁であることが知られています。
コンパイラの違いなど、環境変更によって生じる誤差に配慮する場合、このような誤差は許容して運用することで、計算機科学として矛盾のない評価が可能となります。
ディジタル計算機による数値演算では、すべて整数型で計算するときや、2のべき乗など浮動小数点でも厳密な数値が定義できるときなどに限り、手計算と同じ厳密な結果が得られます。
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!