« Camino 1.5.1リリース | トップページ | ClamAV 0.91.2リリース »

2007年8月17日 (金)

表計算の有効桁数

前回に引き続き表計算ソフトのネタ。今度は次のような計算をしてみた。目的は、それぞれのソフトでセルとの入出力に有効な桁数の確認。
A1 : 1
A2 : =1/3
A3 : =A1+A2
A4 : =A3-A1
A5 : =A2-A4
A6 : =A2-0.333333333333333    小数点の後に3が15個、68k Macでは19個
A7 : =A2-0.3333333333333333    小数点の後に3が16個、68k Macでは20個

以上の計算のA5, A6, A7の値を表にしてみた。

セルA5

セルA6

セルA7

素直な倍精度浮動小数点
AppleWorks 6.2.9/MacOSX
Mariner 5.5.1/MacOSX
Gnumeric 1.7.9/MacOSX

5.55e-17

3.33e-16

0


何か操作された倍精度浮動小数点


Excel 5.0/68k

5.55e-17

3.33e-16

3.33e-16

Excel 98/Classic

#DIV/0!

3.33e-16

3.33e-16

OpenOffice.org Calc 2.2.1/MacOSX

0

3.33e-15

0


80ビット浮動小数点
クラリスワークス 4.0/68k

-2.71e-20

5.42e-20

0

MacOSX/PowerPC G4上のAppleWorks, Mariner, Gnumericは小細工無しにセルから値を取得して計算しているようだ。
Excel 98はやっぱり不思議な事をしていて、演算そのものは倍精度浮動小数点なのだけど、セルに代入する時に最後の桁が丸められているような感じがする。また、セルから取得できるのは15桁までのようだ。
OpenOffice.org CalcはExcelよりも一桁短くセルとの入出力を制限している感じ。関数電卓では表示10桁、内部演算精度13桁等として、表示している部分に演算誤 差が出にくいようにしているが、ExcelやOOo Calcでも同様な考え方なのかもしれない。表示を14〜15桁として計算誤差を見えにくくしているのかもしれない。実際、ExcelやCalcで表示書 式で小数点以下を30桁(Excelの最大設定値)や20桁(Calcの最大設定値)の表示指定にしても、15桁まではまともな数値が入っていて、それ以 後は0が続いている。Gnumericだと小数点以下30桁までの表示桁数を指定できて、このときは2進数を10進数に変換したときの値がそのまま出てき ている。つまり、16桁は10進数で正しい数値で、17桁目以降は無意味な数値が続く。クラリスワークスやAppleWorksではシステムの演算精度- 4桁位しか表示桁数の設定ができない。PPC上では全部で12桁、68k上では全部で16桁位。無意味な数字を表示するよりも、最初から表示させない方が いいのかもしれない。Marinerは小数点以下15桁の表示指定が可能。

倍精度の桁一杯利用したいときはGnumericあたりを使うのが一番かも。ある意味マニア向けのような気がするけど (^^;)

今回、68k版のMariner 4.0.2でセルに0.33333333333333333333と有効桁一杯の数値を入れるとなぜか0.03333333333333333333と なってしまう事を確認した。0.142857...や1.111...や22222222222222222222などの他の数値でも桁一杯(19桁以 上)だと同様に1/10になってしまう。なかなかすごいバグだな (^^;) PPCで4.0.2を動かすと問題無いのだけど。

|

« Camino 1.5.1リリース | トップページ | ClamAV 0.91.2リリース »

AppleWorks」カテゴリの記事

NeoOffice/OpenOffice」カテゴリの記事

Excel」カテゴリの記事

Gnumeric」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: 表計算の有効桁数:

« Camino 1.5.1リリース | トップページ | ClamAV 0.91.2リリース »