10月の誕生会はメキシカンのケータリング

私が苦手なもののひとつが、メキシカン料理。

豆をペースト状にしたようなものが苦手です。

しかし、社員にはメキシカン料理が大好きという人たちも多くいて、サンシャイン60からメキシカンのお店がなくなってがっかりしていました。

10月の誕生会では、そんな気配を察してか、幹事のI君が、メキシカンのケータリングという未だかつて誰も挑戦したことのない領域に踏み出したのです。

今回利用したお店は、SALSA CABANAです。都内唯一のメキシカンケータリングとのこと。

こんな感じになりました。

気がつくと、豆料理がない!

これは助かったと思いながら食べてみると、とても美味しかったです。

わざわざ小さなソンブレロと付け髭で場を盛り上げた幹事、ごくろうさまでした。

台風被災ボランティアとSOVOL

当社のシリコンバレーインターンシップで2年にわたり作ったボランティアマッチングシステム SOVOLというものがあります。

SOVOL
https://sovol.earth

これは、

個人がボランティア募集して、

個人が応募する

ということができるもので、台風被害のように、片付けを手伝って欲しい時などはとても役に立ちます。

市役所ボランティアセンターはいまだ開設しておらず、一番人手が欲しい時に募集できません。

また、集合場所が市役所に9時、そこでボランティア受付に1時間、行き先を割り振られて、実際に現場に行って作業開始は11時などになってしまうのに対して、SOVOLならば朝9時に現場に行くことが可能です。

SOVOLは運用開始後、たまに利用者がいる程度で現在も利用がありませんが、こういう時に利用してもらえればと思い、ここに記載させていただくとともに、社会貢献活動として当社も行っていますが、予算もかけて宣伝していこうと考えています。

しかしながら、どう宣伝したらいいか、いいアイデアもないため、もしよろしければ、こちらのコメント欄にアイデアを記載いただければ幸いです。

コメントは匿名希望と書いてある場合は公開しませんので、お気軽にいただければ幸いです。

消費税15%になるとコンピュータ暴走?!

消費税10%で大きな問題も起きず、一安心しているシステム管理者も多いことでしょう。私もその一人です。

さて、これまで

3% →  5% → 8% → 10%

と上がってきた消費税ですが、今後、もし15%になると、これまで起きなかった問題が起きることが予想されます。

それは…………………………

コンピュータの計算が狂う

のです。

百円のものに15%の消費税がかかるという計算を、コンピュータで普通にやってみます。ここでは Macの Pythonというプログラミング言語でやった例を表示します。

「*」はかけ算の意味です。

消費税は、一般的に切り捨て(*1)となるので、百円のものを買えば115円になるはずが、114円になってしまうという計算結果になるのです!

どうしてこんなことが起きるのでしょう?

それは、コンピュータは内部では2進数を使っていて、小数点以下の数字は2進数で正確に表せないことが多いから、なのです。

「え?! どんな数でも2進数で表せるよね?」

と思われる方も多いでしょう。整数においてはそうなのです。

10進数で表される小数点以下の数が他のN進数で表せないということを感覚的に理解してもらうために、3進数を考えてみることにします。

3進数は3つ集まると桁があがります。

1、2の次は3ではなく、10になり、その後は、11、12となって、その次は20になります。

使われる数字は0、1、2の3つです。

では3進数の0.1はどういう数でしょう?

0.1が3つ集まったら桁があがるので、1になります。

ということは、3進数の0.1は10進数で言えば、1を3で割った数で、0.33333……になり、どこかで桁を切らざるを得ず、微妙な誤差が出てしまいます。

この例では、3進数→10進数で誤差がでるという話ですが、同様なことが10進数→2進数でもあって、お互いに小数点以下の数は誤差がでることが多いのです。

では、なぜこれまでの3%、5%、8%、そして今回の10%の時に起きなかったのでしょう?

理由は簡単で、「2進数の値が、ほんのすこし大きかった」からです。ほんの少し大きい数をかけて、最後に切り捨てにするので問題になりませんでした。

下の表の、1.03、1.05、1.08、1.10のコンピュータ内部の数を見てください。いずれもすこし大きくなっています。

それに対して、消費税13%から消費税16%については、ほんの少し小さくなります。それが原因で百円の消費税が1円少なくなってしまうのです。

念のため、百円のものに対する消費税を30%まで誤差を計算してみたところ、消費税13%から16%の時に、誤差が出ることがわかりました。

面白いのが、値段によって誤差が出る時とでないときがあります。

たとえば、300円のもので計算すると、誤差がでないのに、400円だと誤差がでます。

買い物をする側にとっては1円トクをする話です。

ただし、これにはちゃんと対策があって、整数計算にする方法がその一つです。

つまり 100 × 1.15を計算するのではなく

100 ×  115 ÷ 100

というふうに整数計算にしてしまう方法や、精度の高いライブラリを使うなど、いくつか対策があります。

15%の消費税の時に、対策をしていないと100円の商品に対して14円の消費税になることが予想され、しかも値段によって正しい答えが出たりするので混乱しそうです。

(*1)消費税に端数が出た場合は、切り捨て以外の方法も法的には可能なようですが、ほとんどのお店では切り捨てにしています。