順番学研究所のご案内

無料ブログはココログ

« 2008年6月 | トップページ | 2009年12月 »

2009年8月

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進法で計算してくれるアプリケーションやプログラム環境を探して、そちらでやったほうがいいんじゃないかと思います。

2009年8月 1日 (土)

おつりが777円になる可能性の高い、最もラッキーな消費税率を探せ!

 衆議院選挙が近づくこの頃、バラマキ予算の財源問題に関する議論も盛んになってきました。

 消費税を上げるの上げないのと、議論があるようですが、前回の1997年の橋本政権による消費税アップの後、めちゃめちゃ景気が冷え込んだことも思い出されます。それと同時に、わたくし考えてみますに、消費税が3%から5%に上がって以来、おつりが777円になることがめっきり少なくなったように思うのです。これが、小さなことに喜びを見出していた国民の士気を下げ、景気悪化の一因となったのではないでしょうか。

 コンビニやスーパーなどでおつりに7のゾロ目が出ると、少しテンションが上がって「その日はいいことがあるかも」と思うような、そんなことによすがを求めて細々と生きている人がこの日本には1億人くらいいると思います。そこで、今回はおつりが777円になる可能性が消費税率が3%から5%に上がったことで本当に減ったのかどうか、また、今後どのように消費税を設定したら、おつりが777円になりやすいかを考えてみたいと思います。次の消費税アップの際には、おつりが777円になる可能性が多くなるような消費税率を選ぶべきだと思うのです。

 今回考えるのは、本体価格(税抜き価格)が10円単位の商品を買った場合です。消費税は小数点以下切り捨てにします。支払いを1000円単位でしたときに、おつりが777円になる場合を考えるということです。

 わたくしは、整数論とかそういうのはまったくわからないので、本当はもっとうまい方法があるのかもしれませんが、上記のルールでおつりが777円になるパターンを、消費税率が3%の場合から20%の場合まで、1%刻みでしらみつぶしにExcelを使って探索しました(金額は10万円までを対象としました)。すると、やはり、消費税率3%は、おつりが777円になる場合がもっとも多いことがわかったのです。

 

 消費税率が3%の場合、価格が10万円までの範囲でおつりが777円になる本体価格は以下の11通りです。  

                   
3130
4100
14780
25460
37110
47790
59440
70120
81770
92450

 

  一方、消費税率が5%の場合におつりが777円になるパターンは10通りしかありません。

                 
3070
19260
23070
39260
43070
59260
63070
79260
83070

 

 しかも、黄色く色づけて示したように、1万円以下では3%の場合は2通りあるのに対し、5%の場合1通りしかありません。何ということでしょう。やはり、直観は正しかったのでした。

 さらに、消費税率20%までしらみつぶしに調査した結果、驚くべきことに気付きました。なんと、本体価格が10円単位である限り、どうやってもおつりが777円にならない消費税率が存在するのです。

 そのワースト・ケースとは具体的には、消費税率が12%のときと、20%のときです。したがって、何があっても消費税率を12%や20%にしてはいけません。

 では、消費税を上げなければならないとして、最も777円のおつりになりやすい消費税率はどのようなものなのでしょうか。

 それも調査済みであります。その答えは消費税率19%です。このばあい、本体価格が以下の11通りのパターンで、おつりが777円となります。

 

                   
5230
6070
30440
31280
54810
55650
56490
80020
80860
81700

 

 一応、1万円未満の金額で2通りの可能性があるし、これが最善のパターンのようです。「19%て、税率高杉」とおっしゃるなら、税率17%でもいいかもしれません。

 

                 
1900
3610
16430
18140
30960
32670
45490
60020
74550

 

 これだと、パターンは10通りしかありませんが、1万円以下どころか5000円以下に2通りも「ソリューション」が存在し、庶民派と言えるかもしれません。

それでも気に食わなければ、消費税率9%というのはどうでしょう。

 

               
2040
5710
30480
34150
37820
62590
66260
69930

 

 条件を満たす本体価格は9通りしかありませんが、1万円以下で条件を満たすものが2通りあります。消費税率が10%以下で、1万円以下の価格で2通りのソリューションをもつものは、税率3%のほかには、この税率9%の場合しかありません(税率を1%刻みで設定するとして)。

 為政者の方々は、これらの事実をよくよく踏まえて、消費税率の議論に臨んでいただきたい!

 それはともかく、お店を経営されている皆さんは、消費税5%であるうちに、本体価格が3070円の商品を開発して、お客さんを喜ばせてみてはいかがでしょうか。こういうことで喜ぶおバカは、案外、多いと思いますよ。

« 2008年6月 | トップページ | 2009年12月 »