> 単に「”桁数”で見切って処理する」というやり方は、
> 理論的に間違っているのではないでしょうか?
とりあえず乗算の有効桁数について,少し大雑把な証明をしてみます.
(精確・厳密ではありません.)
ある数値 X (真値) を四捨五入して有効数字m桁に丸めた値を X' とする.
乗除算の有効数字なので,考えやすいように X' の指数部を無視し,
仮数部だけを取り出して 1 ≦ X' < 10 と仮定しても一般性を失わない.
X' に対する真値Xの範囲は,四捨五入の意味を考えると,
X' - 5 * 10^(-m) ≦ X < X' + 5 * 10^(-m).
真値に対する相対誤差 (X'/X - 1) は次のようになる.
-5 * 10^(-m) / X < X'/X - 1 ≦ 5 * 10^(-m) / X.
したがって相対誤差の範囲は約 ±5 * 10^(-m).
同様に別の数値 Y (真値) を四捨五入して有効数字n桁に丸めた値を Y' とすると,
その相対誤差範囲は約 ±5 * 10^(-n).
したがって積 X' * Y' の相対誤差範囲は
約 ((1 ± 5 * 10^(-m)) * (1 ± 5 * 10^(-n)) - 1).
この最大値は,m≠nならば約 ±5 * 10^(-min(m, n)),m=nならば約 ±10^(1-m).
後者の場合は,有効数字m桁目に±1の誤差を含むことになり,
それ以下の桁は全く信用できません.したがって有効桁数はmです.
前者の場合は,有効数字 min(m,n)+1 桁目に±5の誤差を含むことになり,
この桁以下は全く信用できません.したがって有効桁数は min(m, n) です.
お礼
度々のご回答有難うございました。 この場を借りてお二方にお礼を申し上げます。