読み方 : けたおち

桁落ち【loss of significance】

概要

桁落ちとは、値の近い実数同士で減算を行った際に、有効数字の桁数が大きく減少する現象。コンピュータが浮動小数点数を用いて数値計算を行う際に生じる誤差の一種で、その後の計算結果にも影響を及ぼす。減算前は十分な精度を持つ値であっても、結果として残る有効数字は大幅に少なくなる。
桁落ちのイメージ画像

コンピュータでは実数を有限のビット数で表現するため、多くの数値は近似値として記録される。無限小数や桁数の多い小数を扱う場合、ある桁より下を四捨五入するなどして有限の桁数に丸めて表現することになり、この処理によって元の値との間にわずかな誤差(丸め誤差)が生まれる。

丸め誤差を含む値同士が極めて近い場合、その差を求める減算を行うと上位の桁が互いに打ち消し合い、結果として残るのは誤差を含んだ下位桁だけになる。これにより、結果の値は元の値に比べて極めて小さくなり、有効数字として意味を持つ桁数も大きく減少する。減算の対象となる2つの値が近いほど、この影響は大きくなる。

例えば、√100001-√100000という計算を有効数字8桁で行うと、0.31622935×10³-0.31622777×10³=0.158×10⁻²となり、計算前は8桁あった有効数字が3桁まで減少する。コンピュータの浮動小数点形式では、このように失われた下位の桁を0で埋め、便宜上0.15800000×10⁻²のような形で扱う。この0で埋められた部分は計算によって正しく導かれた値ではなく、見かけ上の桁数を保つための埋草に過ぎない。この値に大きな数を掛けるなど計算を続けると、桁落ちによって生じたわずかな誤差が拡大し、最終的な計算結果に大きな誤差として現れることがある。

桁落ちは加算や乗算、除算では発生せず、近い値同士の減算に特有の現象である。これを避けるため、数式を変形して近い値同士の減算を回避する方法が用いられる。例えば√100001-√100000 は、(√100001+√100000)/(√100001+√100000) を乗じて 1/(√100001+√100000) という形に書き換えると加算と除算だけになり桁落ちを起こしにくくなる。このほか、倍精度実数型など、より多くの桁数を扱えるデータ型を採用して計算精度自体を高めておく対策も取られる。

(2026.6.19更新)
 

他の辞典等による「桁落ち」の解説 (外部サイト)

資格試験などの「桁落ち」の出題履歴

▼ 基本情報技術者試験
【令4修12/令2修7/平31修1/平29修6/平27春/平25修7/平22秋】 桁落ちの説明として,適切なものはどれか。
【平27修12/平26修6/平23修12】 浮動小数点形式で表現される数値の演算において,有効桁数が大きく減少するものはどれか。
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。