林檎スマホの電卓アプリ
最近は計算機がなくても、ちょっとした計算はスマホの電卓アプリで事足りてしまいます。
林檎スマホにも標準アプリとして電卓が搭載されています。
ところがこのアプリ、とても気味悪い仕様になっています。
要求しない計算までやってくれるのです。
この余計なお節介を具体的に示します。
お節介その1
〜勝手に四捨五入
冒頭の問題を解くために、スマホの電卓(標準アプリ)で2÷3 を実行すると…
結果は割り切れず、小数点以下6が続く循環少数になるはずです。
ところが、結果は…
小数第8位が7になっています。小数第9位を四捨五入したのでしょう。
とても気持ち悪いです。表示された「0.66666667」が確定数字なのか、それとも丸めた数字なのかが分かりません(この場合は後者であることが強く推定されますが)
端数を丸めるにしても四捨五入が定法ではありません。
麻雀の場合は、百点棒が一本でもあれば千点に切り上げて計算する切り上げが一般的です。
また、「10mのローブから3mのロープが何本得られるか?」なんて問題には10÷3を計算して小数点以下を切り捨てることになります。
結論です。
この電卓は壊れています。なぜなら《2/3 ≠ 0.66666667》 だから。
もとより、切り捨てか四捨五入かなんて端数処理はユーザーがデータ加工時に行う作業です。
しかも、この電卓アプリの仕様には一貫性がありません。
iOSの音声アシスタントのSiriに対し、
「Hey Siri 、2割る3は?」と問いかけると… 計算機にKさんキレた!(K=Konishi)
なんだよ、今度は四捨五入しないのかよ!
では、電卓アプリで、端数処理はどうあるべきでしょうか?
解決案を2つ記します。
①設定で端数処理を選択可能に
このアプリには端数処理の設定が見当たりません。
以下のような設定オプションを設けるべきでしょう。
オフ→オン にすると
②循環小数であることを明示
循環小数は、循環する部分の最初と最後の数字の上に「・」をつけて表します。
0.66666666••• を表しています
循環している数字が1つの場合は、その数字の上に「・」をつけます。
でも、一番シンプルで誤解を生じにくいのは、「決まった桁数までを表示して最終桁は丸めずそのまま表示する」かもしれません。
そうすれば、②における、循環しない無限小数(無理数)の処理に悩むこともありません。
お節介 その2
〜勝手に無限級数和を計算
1÷3 はこうなりますよね。
そしてこの結果を3倍すると、
ですよね。
だけど、林檎スマホでの結果はさにあらず。
林檎スマホのお節介の所作は以下の通りと推察します。
0.999999•••
これは等比数列の和で表されます。その和Sは、
S = a x (1-r^n)/(1-r)
a: 初項 r:公比 (r≠1)
において、初項が0.9で公比0.1を代入。無限級数だから r^n (r<1)は0に収束します。
よって、
S=0.9 x 1/(1-0. 1)=1
確かに1になります。
頼んでもないのにこんな計算をしてくれています。
これらの奇怪仕様は、アプリ制作者にとっては痒い所に手が届く小さな気配りのつもりかもしれませんが、ユーザーにとっては困惑をもたらす大きなお世話でしかありません。
Appleさん、なんとかしてね!