トップ 一覧 置換 検索 ヘルプ RSS ログイン

桁落ちについての変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
http://akademeia.info/index.php?%A5%B3%A5%F3%A5%D4%A5%E5%A1%BC%A5%BF%A4%CE%B8%ED%BA%B9

!!!有効数字と有効桁
有効な桁を有効数字、その桁数を有効桁数と呼ぶ。
[例]
    「1234」の有効桁数は4
    「12.30」の有効桁数は4
    「0.012」の有効桁数は2
    「1200」の有効桁数は4または2
        1.200×103とすれば、有効桁数は4桁
        1.2×103とすれば、有効桁数は2桁 

!!!桁落ち

 123.456 - 123.454 = 0.002
浮動小数点演算において、絶対値のほぼ等しい2つの数値を減算したときに、有効桁*1数が少なくなる現象を桁落ちという。有効桁が減ることで、真の値との間に生ずる誤差である。
正規化により有効桁数が減少するが、見かけの精度だけは高い。
例えると、「3-2=1.000…」としても、意味なく連続したゼロは演算精度とまったく関係ないことに似ている。
絶対値のほぼ等しい2つの数値を減算した場合、仮数部の先頭から多くの桁が0になる。この結果、仮数部の正規化が行われるために発生するものである。
桁落ちを防止するには絶対値のほぼ等しい同符号の減算をできるだけなくすように計算式を工夫する必要がある。

!!本質的な問題
桁落ちの本質的な問題は、「有効桁数の減少により、結果的にほとんど誤差のみになってしまう」ことである。上記の例では、123.456と123.454のいずれも末尾の桁に誤差を含んでいる場合、その数値自体に占める割合は10-5(=0.001%)程度であるが、減算の結果(0.002)は100%誤差である。
{{category2 プログラミング全般}}