順番学研究所のご案内

無料ブログはココログ

« おつりが777円になる可能性の高い、最もラッキーな消費税率を探せ! | トップページ | バイク盗難保険に入るべきか? »

2009年8月 4日 (火)

Excelのバカ!

 前回は消費税率がどのくらいだと、おつりが777円になりやすいかという話をしました。

 このことを調べる際、わたくしはいつものようにExcelを使いました。Microsoft Excel2007です。決して、マイクロソフトが主張するところのまがい物オフィス製品ではなく、マイクロソフトの正規の製品を、ちゃんと買って使いました。

 そして、その計算の過程で、Excelがあろうことか、計算間違いをすることに気付きました。

 そして、このことを、皆さんにお知らせしないわけにはいかないと思ったわけであります。

 具体的にどのような計算間違いをあやつがしたのかと申しますと…

 

 消費税とおつりの関係の計算には、たとえば以下のような式を使います。

  =1000-INT(MOD(51950*1.14,1000))

 これは、「消費税率が14%のとき、本体価格51950円の商品を買って1000円単位の支払いをしたら、おつりがいくらになるかを示す式」です。「MOD」という関数は、ある数字で割ったときの余りを示します。ここでは「51950*1.14」という数字を1000で割ったときの余りを示すようになっています。「INT」という関数は、小数点以下を切り捨てた数字にする関数です。

 この計算を、Excelは間違えました。

 皆さんにはぜひ、お手元の電卓で一緒に計算をしていただきたい。51950円に仮想的消費税である14%を乗っけた金額、つまり51950×1.14は、59223円となります。これを1000で割った余りはいくつになるかといえば、あたりまえですが223円です。この数の小数点以下を切り捨てにしようとしても、小数点以下の数値はないので、そのままですよね。そして最後に、1000から223を引けば、はい、777円のおつりということになります。これが電卓を使って計算した結果です。

 ここまではいいですね。

 ではさっき示した数式を、Excel2007にぶち込んで、計算させてみてください。すると、Excel2007はあろうことか、778という答えを返してきやがるのです。ほら、でしょ?

 これだけで驚いてはいけません。私が遭遇したエラーはこれだけではありませんで、このほかに、二つありました。それは…

 =1000-INT(MOD(28020*1.15,1000))

さらには、

 =1000-INT(MOD(48020*1.15,1000))

というパターンであります。これらも答えが777にならなければなりませんが、やはり同様に778と表示されてしまいます。ちなみにこの症状は、INT関数を使わずに、小数点以下を切り上げる関数であるROUNDUP関数などを使っても矯正されません。同じようにExcelは間違えます。

 まあ、コンピュータは二進法で計算しているから、この手の切り上げや切り捨ての計算でエラーが起こることは、原理的にはわからないでもありません。でも、Excelは昨日や今日、作られたアプリケーションじゃないんだし、結構いい値段で、長い長い年月にわたって売り続けているんだからさー、いい加減、この手のエラーはつぶされていてもいいんじゃないでしょうか。でも、つぶされていないんですねぇー。いちおう、Windows updateも定期的にかけて、Officeもアップデートして最新の状態にしているんですけれど、このエラーは治っていないんですねぇ。おおこわ。

 でも我らがgoogle Docsならきっと正しい答えを出してくれるにきまってます。そのように考えて、マイクロソフトを追い落とそうとしているgoogleに期待をかけ、上記と同じ計算をgoogle docsのSpredsheetでやらせたら、なんと同じように間違えやがりました。なんてこった…。

 じゃあ、同じくマイクロソフトを目の敵にしているサン・マイクロのOpenOfficeだったらどうでしょうね? OpenOfficeは関数の意味や書式が若干Excelと違うので、INTじゃなくてROUNDDOWNとかに書きなおす必要がありますが、そのようにやってみたら、どうでしょう。えいっと入力すると、なんと、こいつも同じように間違えやがります。絶望的な気分になってきました。

 最後に期待をかけて、Linuxの上で動くGnumericというスプレッドシートのアプリケーションで計算させてみました。結果は…、やっぱり間違えましたよぉ。これで全滅です。おおこわ。

 いままで、まさかExcelとかに計算間違いをするようなバグがあるとは、考えもしませんでしたが、2009年の今でも、こういうことが起こるんですね。しかも、他のソフトも全滅だなんて、ちょっとショックです。

 世の中には命にかかわるような計算や、巨額のお金がかかった計算が存在しますけれど、とくに、切り上げや切り捨てが絡む場合は、Excelやその他のスプレッドシートプログラムではやらない ほうがいいですねー。きっちり、10進法で計算してくれるアプリケーションやプログラム環境を探して、そちらでやったほうがいいんじゃないかと思います。

« おつりが777円になる可能性の高い、最もラッキーな消費税率を探せ! | トップページ | バイク盗難保険に入るべきか? »

量・個数」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« おつりが777円になる可能性の高い、最もラッキーな消費税率を探せ! | トップページ | バイク盗難保険に入るべきか? »