ブログ名の設定は、まだ。 ネット社会の一粒の"地の塩"でありたいと思っています。

1÷3×3=1という話など。

2016年07月07日 · カテゴリ:パソコン・ソフト関連, 雑記

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

そのときの話。

da5c6fdd6edc19881a86d1dbb97

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

また、iPhoneだと、きちんと1になりますが、
Androidは機種によって1だったり0.999・・・だったり。

プログラマさんに聞くと、コンピュータの世界は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」。

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

« 1つ古い記事:

1つ新しい記事: »

Leave a Reply

Trackback URL

記事テーマと関係ないとか、リンクがない場合(一方的TB)、あとアダルトサイトは申し訳ないですが承認しませんので予めご了解ください。またrel="nofollow"つけてるので、SEOのリンクジュースが目的のコメント、TBは残念ながら効果が無いと思います。予めご承知おきください。