2019年3月27日水曜日

エクセルはどこまで正確に計算できるか?

 手元にある電卓で「1÷3×3=」と入力すると、「0.9999999」という結果になった。「1÷3」は割り切れないので、電卓の中では計算結果が「0.3333333」となって、それを3倍して「0.9999999」になったというわけだ。
 ところで、同じ電卓で「1×3÷3=」と入力したら、結果は「1」になった。電卓は入力した順番に計算すると考えれば、そうなることはなるほど納得できる。

 さて、エクセルはどこまで正確に計算できるのだろう?

(1) セルA1に「=1/3」を入力して、小数点以下の表示ケタ数を増やしてみた。
  小数第何位まで正しく表示するだろうか? (※1 をクリック)

(2) セルB1に「=1/2」を入力して、セルB2に「=B1/2」を入力して、
  セルB2の式を下方向にコピーした。何行目まで正しく表示するだろうか?

(3) セルC1に「=2」を入力して、セルC2に「=C1*2」を入力して、
  セルC2の式を下方向にコピーした。何行目まで正しく表示するだろうか?
 (ただし、(3)のC列では ※2 の▼印をクリックして、「数値」を選ぶ)


その結果・・・
(1) 小数点以下20位まで表示してみたところ、「3」が15個並んで、それ以降は0となった。
  これは小数第16位を四捨五入して、小数点以下15位までで表した値と一致する。

(2) 21行目までは正しく表示したが、22行目で値が合わなくなった。
  21行目(1/221 の値)は 0 でない数が小数第7位から小数第21位まで続く数であるが、
  つまり15ケタ分は正しく表示したことになる。
  22行目(1/222 の値)は 0 でない数が16個続く数になるが、15個までは正しく表示して、
  16個目の数字が 0 になってしまっている。

(3) 49行目までは正しく表示したが、50行目で値が合わなくなった。
  49行目(249 の値)は15ケタの整数で正しく計算したが、
  50行目(250 の値)は16ケタ目が 0 になってしまっている。

 以上 (1),(2),(3) からわかること。それは、エクセルは有効数字にして15ケタ程度までは正しく計算できるが、それ以上になると正しく計算できなくなるということだ。
 15ケタというと、整数値の場合、数百兆のレベルになる。それを超えた数、つまり一千兆のレベルはエクセルで正確には計算できないことになる。では、エクセルでは一千兆を超えた数は扱えないのかというと、そういうことではない。それについては、また 次回


 →  →  →  →  → 

0 件のコメント:

コメントを投稿