ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.014

負の小数値を合計したときに計算結果に誤差が生じる

2003/2007/2010/2013

合計を求める簡単な数式なのに、結果が合わないというお問い合わせをいただきました。その数式の特徴は、小数値の負の数を含みます。

例えば、次のようなケースです。表示形式は既定の標準です。

=11.12-11.15+0.03 または =(11.12-11.15)+0.03

結果は0と思いきや、セルには「-1.13798E-15」と表示されます。
この指数表示だとわかりにくいので、表示形式を[数値]に設定してみます。

するとセルの表示は「(0)」となります。やはり、マイナス値となっているようです。
そこで小数点の表示桁数を増やしてみます。
すると表示は「(0.00000000000000113797860)」となり、少数15桁のところから値が出てきました。

負の小数値の計算

この現象は、小数値によっては発生しないケースもあります。

この件調べましたら、次のマイクロソフトさんのサイトで説明されていました。

Excel で浮動小数点演算の結果が正しくない場合がある

先述の計算式では、先に計算される「11.12-11.15」で-0.03が格納されるときに生じる誤差ということのようなのです。

したがって、Excelの仕様と言ってよいこの現象を回避するには、端数処理の関数を使用して、計算結果を丸めてしまうというのが一番よい方法です。

twitter hatena line pocket

関連ヘルプ

7桁で入力されている郵便番号のデータにハイフォンを挿入したい 《REPLACE》
左から(右から・途中から)決まった文字数の文字列を取り出す 《LEFT・RIGHT・MID》
余分なスペースを削除してスペースを全角または半角に揃える 《SUBSTITUTE・TRIM》
全角の英数字を半角にするには、またはその逆 《ASC・JIS》
数字文字列を数値にする(関数編) 《VALUE》
別々のセルに入っているデータを結合して(つなげて)表示する 《アンパサンド・CONCAT (CONCATENATE) 》
2つの日付の期間が何年かを求める 《DATEDIF》
セルに入力されている数値を時刻の表示にする 《TIME》
時刻の「8:30」を「8.5」と数値に変換する
循環参照を解決するために
条件を満たすセルの個数を数える 《COUNTIF》
フィルターで抽出されたデータの件数、合計をセルに表示したい 《SUBTOTAL》
検索条件に一致するデータの合計を求める 《SUMIF》
カウントする関数が何をカウントするか 《COUNT・COUNTA・COUNTBLANK》
=のあとに+が表示された「=+」から始まる数式の意味とは
数式で参照しているセルを変更しても、結果が更新されない
セルに計算結果ではなく数式が表示されている
先頭のシングル クォーテーション、アポストロフィー(')を取るには(関数編) 《SUBSTITUTE》
10進数の数値を2進数と16進数に変換するには 《DEC2BIN・DEC2HEX》
月の日数、月末を求める 《EOMONTH》