2025年10月11日土曜日

電卓の話題で、こんな話を見た

 確か、以前にもあったと思うけれども、6÷2(1+2) の答えが色々と悩ましいとの事。

ref. 6÷2(1+2) - Wikipedeia
https://ja.wikipedia.org/wiki/6%C3%B72(1%2B2)

電卓で計算しても処理方式が様々で、答えが 9 であったり 1 であったりするのだそうです。

まずは、CASIO fx-CG50 でやってみましたヨ。
6÷2(1+2) を 6÷(2(1+2)) と自動で書き換え、1 を返しますネ。教育用途という所で、配慮されているようであります。

続いて、fx-CG50 の upython ですが、プログラム言語なので、こうなりました。

>>>6/2(1+2)
TypeError : 'int' object is not callable
エラーです。なるほど。2は関数として呼び出せない、という具合です。

HP Prime の simulator でもやってみました。


"6/" まで入力した所、自動で分数表記になり、以降の 2(1+2) を入力すると 2(1+2) の分子の扱いとなって、結果は 1 になりました。これはこれでウマイ回避法です。

HP電卓で広く使われていた RPN でやるならば、こんな具合になりましょうか ?

6 [ENTER] 2 [ENTER] 1 [ENTER] 2 [+] [*] [/]  → 1 を返します
また、6÷2*(1+2) として計算するには、

6 [ENTER] 2 [/] 1 [ENTER] 2 [+] [*]  → 9 を返します

括弧で括った項と数値の掛け算で、掛け算記号が省略されてしまう事から、演算子の優先順位に混乱が生じるため、こんな具合になるのでしょう。

Wikipedia の記述によると「この式自体の記述がオカシイ」とする方式もあるそうで、式記述について、曖昧にならない様な指導が期待される所でもありますが、学校教育の現場では、今暫く、この問題に悩まされることになりそうです。

【おまけ】
fx-CG50 XCAS で試したら、

6/2(1+2)
Warning : using implicit multiplication for (2)(1+2)
                  1
でした。暗黙の掛け算処理を適用、という具合です。

0 件のコメント: