Excelの落とし穴

小数の集計に誤差

Excelでは数値表現として有限桁数の方式をとっていいます。
Excelの誤差の原因は、プログラムのバグなどではなくパソコンの基本的な仕組みが原因です。
Excelでは、有限桁数で正確に表現できない数が存在します。
人は数を10進数で考えますが、パソコンの世界(Excelを含む)では2進数で計算されます。

Excelでは小数の計算に誤差が生じることもある!!

10進数の小数を、Excelで(2進数で)表現しようとすると正しく変換できません。
例えば「0.1 」という数字を2進数に変換すると、無限小数となってしまいます。
有限桁数の2進数では、正確な値を表現することができません。
つまり、10進数の「0.1」と2進数に変換された値はイコールではないということです。
個々の場合は、それほど大きな影響はありません。
しかし、そんな数値同士を計算する場合、元の数以上に大きな誤差となることがあります。
そんな数の中には、無視できない誤差として表面に現れることがあます。
Excelで扱う数値はほとんどが計算することを目的として取り扱われています。
つまり、かなり大きな確率で誤差が出現していることになります。
しかし、Excelの見た目の計算精度は15桁程度だそうです。
小数以下の数値は、4桁程度で表示することがそれほど問題ではありません。
しかし、誤差の大きい数値を積算して使用する場合は、誤差が倍増し表面に現れるので要注意です。

10,000円を1年度積み立てる場合の例

10,000円を1年で積み立てる場合、1月分は833円と無限小数になります。
お金を表示する場合、少数以下の桁は丸めるため非表示にします。
書式設定で丸める場合と計算式で丸める場合の二通りで説明します。
 小数の誤差
 833円を12か月分を合計すると、「9,996円」となるのが正しいのですが、
 書式で丸めた場合は、「10,000円」になり正しい結果が得られません。

こんな時、書式設定で丸めて安心していてはなりません。
10,000円徴収したつもりでいたのに、実際に徴収できる金額は9,996円にしかなりません。
誤差は僅か4円程度なのでそれほど問題にはなりませんが、大きな金額を扱う場合損失も大きくなります。
お金を扱うならば、計算式で丸めるのが正しいやり方です。