Google検索やiPhoneでは1÷3×3=1、電卓では1÷3×3=0.99999…。

先日、某サイトの仕事をしていて、小数点以下1位で四捨五入していくと、まれに1円誤差が出るというバグ(?)の問題がありました。

そのときの話。

1÷3×3=1
それは
1×3÷3=1
でもあるわけですが、手元の安い計算機だと
1÷3×3は、0.99999・・・
となってしまいます。

また、iPhoneだと、きちんと1になりますが、
Androidは機種によって1だったり0.999・・・だったり。
下記のGoogle検索窓にで計算式をいれて検索しると、正しく「1」と表示されます。

プログラマさんに聞くと、コンピュータの世界は0か1かの2進法なので10進法を扱わせるとビット数(=桁数)が足らなくなるから、とのこと。

結局某サイトの場合は、(プログラマさん任せでしたが、確か)値×1000とかにして決めた桁で四捨五入したうえで、1000で割るような対処の仕方としました。

翌週、今度はまた別の案件で、評価を星3.5とか、星4という感じで0.5刻みで平均評価を表示させる件がありました。

数字に弱い私は、値が中途半端に「2.74・・・」は「2.5」に、「2.75・・・」は「3」にするにはどうするのかと思いましたが、やっぱり皆さんアタマいいんですね。
最初に2倍して四捨五入してから2で割って元にもどすんですってね。

例えば、
2.74は2倍で5.48、小数点以下1位を四捨五入で5.48は「5」に。
それを2で割ると「2.5」。

2.75は2倍で5.5、小数点以下1位を四捨五入で5.5は「6」に。
それを2で割ると「3」。

小学校の分数の掛け算、割り算あたりから落ちこぼれた私にとっては、そんなことに感動してしまった話でした。


コメントを残す

メールアドレスが公開されることはありません。