単純なエクセルの計算が間違っている

単純なエクセルの計算が間違っている

まず、数字を四捨五入したくありません。10 進数の数字を使用しているので、Excel で単純な加算と減算を実行するのに問題はありません。

A|  665.110000000000000000000000000000
B|  4.990000000000000000000000000000
C|  =a1+b1
D|  670.790000000000000000000000000000
E|  1,335.890000000000000000000000000000
F|  =e1-(c1+d1)

私は-5になるはずだが、F1は戻ってくる

-4.999999999999770000000000000000

これは財務文書なので、端数処理は避けたいのですが、なぜそうする必要があるのでしょうか。セルの書式設定を通貨に設定し、小数点以下 2 桁にすると、正しい表示値が得られますが、すべての計算で -4.9999...7 となり、条件付き書式などでさらにエラーが発生します。

答え1

この問題は、ほとんどすべてのコンピューターの基本的なハードウェアに起因しています。コンピューターは 2 進数システムに基づいているため、0 から 9 までカウントするのではなく、0 と 1、つまり 2 進数のみをカウントします。

高精度の 10 進数が必要な場合を除き、これは問題ありません。コンピューターは、1/2、1/4、1/8、1/16、1/32 などの 2 分の 1 の累乗の分数でしかカウントできません。コンピューターが、パフォーマンスを大幅に犠牲にすることなく、1/3 や 4.99 などの数値を完璧に正確に表現する簡単な方法はありません。

Excel はこの事実を隠すのが非常に上手で、小数点以下 20 桁程度をオンにした場合にのみこのエラーが表示されます。これは四捨五入によって行われますが、四捨五入されるのは結果が表示されるときだけです。

これは財務計算用だとおっしゃいますが、最終結果を小数点以下 20 桁まで表示する必要は本当にあるのでしょうか。それとも、計算が十分な精度で行われ、四捨五入のエラーが発生しないことを確認できればよいのでしょうか。後者の場合、Excel が数年にわたって数え切れないほど多くの金融機関で問題なく機能してきたことを信頼するしかないかもしれません。そして、四捨五入のエラーが問題を引き起こすことを心配する必要はありません。

答え2

これについては以前ここで回答しました。

10 進数の「丸め」数値を使用しているからといって、役に立ちません。コンピューターは数値を 2 進数で保存します。10 進数の丸め数値は 2 進数に変換され、最終的に繰り返されるため、その 10 進数を元に戻すと情報が失われます。

コンピューターユーザーは、次の 2 つの方法でこれを回避します。

1) 特定の小数点以下の桁数まで計算し、それをより少ない小数点以下の桁数に丸めます。2) BCD またはその他の正確な小数点表現を使用します。

私の知る限り、Excel では #2 は使用されないので、別のオプションを選択してください。

答え3

Excel には「表示どおりの精度」オプションがあり、数値を表示するために選択した精度に自動的に丸めます。

http://support.microsoft.com/kb/78113

ただし、これを行うことはお勧めしません。Excel に小数点以下 2 桁に丸めるように指示しているのに対し、現在の丸め誤差は小数点以下 15 桁 (程度) なので、計算にはまったく影響しません。

関連情報