直線上に配置

有効数字


Q32 誤差の補正(計算結果の桁落ち)

セルA1 109720.00、セルA2 109702.85 と入力し、セルB1=A1-A2 で計算します。
答えは17.15のはずなのですが、表示桁を13桁までしていくと
17.1499999999942
となっています。
ちなみにセルA1の値を 720.00、セルA2の値を 702.85 にしますと、きちんと 17.1500000000000 となります。これはどうしてでしょう?
この セルB1 を使用して、様々な計算をしますのでこのような「桁落ち」があると統計処理には支障をきたします



 

コンピューターの内部処理上、小数点以下の微少誤差が発生する事があります。このような場合、ユーザ側にて関数を使用し、正しく補正する必要があります


 ROUND関数で四捨五入を行い、正しい値にします。このような数値の誤差の補正を適宜行わなければ、内部で誤差が累積し計算間違いの元となります。

これはエクセルの問題ではなく、使用するパソコンの性能に依存した問題です。
パソコンでは小数点以下の値を持つ数字は、高速に計算をするために内部でバイナリ形式( 2 進数 )に変換しています。バイナリ形式では、小数点以下の桁数が無限に続く循環小数も出てきます。しかし、この循環小数をそのまま扱うことはできないので、パソコン内部で、自動的に丸められます。その誤差が蓄積されて、計算結果に微妙な影響がでてきます。これはパソコンに搭載されている浮動小数点演算プロセッサーの性能に左右されます。

専用の統計ソフトはこの点を考慮されていますが、エクセルで小数点以下を含む値を何度も掛け合わせて(割り算も同じ)計算する場合、この誤差を防ぐために適時補正を行うことが必要です。

ROUND関数で四捨五入を行うことが面倒ならば、表示項目の「表示されている数値で計算したい」で行ったように [表示桁数で計算する]にチェックを入れて、表示桁数で計算する設定を行います。
この設定をすると、表示されている桁数で計算しますので、誤差は発生しません。
ただし、小数点の表示桁数を変更している場合には注意が必要です。
例えば、「702.851」の数字を、「702.8」と表示している場合は、「702.8」で計算されますので、使い方に注意が必要です。

 このことに関してはMicrosoft の技術情報ページに詳細がでていますので、興味のある方は覗いてみるとよいでしょう。
http://www.microsoft.com/japan/support/kb/articles/J042/5/26.htm


ROUND関数
 書式:ROUND(数値,桁位置)
  数 値 四捨五入を行う数値
  桁位置 四捨五入を行う桁位置
      正数の場合 小数点以下の桁数
      0か省略時 もっとも近い整数に四捨五入
      負数の場合 小数点左側の常に0となる桁数
 意味:四捨五入を行う。

直線上に配置


     目次へ   次のページへ