電卓には可愛そうだけど、電卓の計算精度を知る方法を、工業高校のときにIBM出身の先生から聞いた。
以下の1.11…は、電卓で入力できる最大桁数入力する。例では10桁。
1.111111111*1.111111111=
あるいは、
1.111111111*=
(注:*は、×掛けるの情報処理的表記)
すると答えは、
1.234567890
となるはずである。
16桁なら、
1.234567890123456
となる。
1〜9の整数が並び、それが終わると、0から1234と整数が繰り返される。
どうしてそうなるのかは、各々で解き明かしていただきたいが、これが安い計算機を使うと、特に最後の桁が、ちゃんと順に数字が並ばなくなる。
電卓もコンピュータの一種なので、内部処理は2進数の01信号で処理しています。
知っている人は知っているのですが、2進数による小数点以下計算は、かなり大変なのです。
浮動小数点演算という方法があり、1.1111E0(算術的には1.1111×10^0と表記したりする)と、10の何乗かを掛けて、小数点の位置をずらして計算する方法がありますが、この場合、10の0乗(すなわち1)しか掛けられない。
ちなみに浮動小数点演算速度(FLOPS)は、スーパーコンピュータの演算速度の指標に用いられたりします。
つい先日、家電量販店で電卓を購入する予定があり、いつもの癖でこの、
1.111111111*1.111111111=
を打ち込みましたが、いろんな結果が表示されて興味深かったです。
あなたのAndroidもしくはiPhoneはいかが?
追記
10桁目で繰り上がり計算が発生するので、連続性がズレます。計算機のエラーではありません。
1.23456790123456...
というように、8が消えます。
その次の9が10になるためです。
スマホなどの逐次計算ではその様子がわかります。
以下の1.11…は、電卓で入力できる最大桁数入力する。例では10桁。
1.111111111*1.111111111=
あるいは、
1.111111111*=
(注:*は、×掛けるの情報処理的表記)
すると答えは、
1.234567890
となるはずである。
16桁なら、
1.234567890123456
となる。
1〜9の整数が並び、それが終わると、0から1234と整数が繰り返される。
どうしてそうなるのかは、各々で解き明かしていただきたいが、これが安い計算機を使うと、特に最後の桁が、ちゃんと順に数字が並ばなくなる。
電卓もコンピュータの一種なので、内部処理は2進数の01信号で処理しています。
知っている人は知っているのですが、2進数による小数点以下計算は、かなり大変なのです。
浮動小数点演算という方法があり、1.1111E0(算術的には1.1111×10^0と表記したりする)と、10の何乗かを掛けて、小数点の位置をずらして計算する方法がありますが、この場合、10の0乗(すなわち1)しか掛けられない。
ちなみに浮動小数点演算速度(FLOPS)は、スーパーコンピュータの演算速度の指標に用いられたりします。
つい先日、家電量販店で電卓を購入する予定があり、いつもの癖でこの、
1.111111111*1.111111111=
を打ち込みましたが、いろんな結果が表示されて興味深かったです。
あなたのAndroidもしくはiPhoneはいかが?
追記
10桁目で繰り上がり計算が発生するので、連続性がズレます。計算機のエラーではありません。
1.23456790123456...
というように、8が消えます。
その次の9が10になるためです。
スマホなどの逐次計算ではその様子がわかります。