実数の表示

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 2004.2 (Modified)


予備知識

複数のプラットフォームによる開発に関わっていない場合には、この節は参照しなくても構いません。

コンピュータでは、浮動小数点計算は、数学的な科学というよりは技術です。例えば、3分の1(1/3)は、小数点の後に数字3が無限に続く形で表記できると学習したことでしょう。一方、コンピュータはこのことを認識できず、式を計算しなければなりません。同様に私たちは3x1/3が1に等しいことを概念的に理解していますが、コンピュータはその解を得るために式を計算します。使用するコンピュータの種類によっては、1/3は小数点の後に限られた桁数だけ数字の3が続く有限小数ととして計算されます。この桁数はそのコンピュータの精度と呼ばれます。

古い68KのMacintoshでは、精度は19で、1/3は有効数字19桁で計算されます。WindowsやPower Macintoshではこの数は15になり、1/3は有効数字15桁で表示されます。式1/3を4Dのデバッグウィンドウで表示すると、68KのMacintoshでは0.3333333333333333333と表示され、WindowsやPower Macintoshでは0.3333333333333333148のように表示されます。WindowsおよびPower Macintoshでの精度数は68KのMacintoshでの精度数より小さいため、最後の3桁が異なっているという点に注意が必要です。それでも1/3*3を表示すると、いずれのコンピュータでも解は1になります。

浮動小数点計算で、例えば、裏庭の広さのヘクタールを算出する場合には、小数点以下の桁数等は関係ないため、無視できることでしょう。一方、税務署の申告書を作成している場合には、時にはコンピュータが小数点以下も正確に計算しているかどうかが気になるところでしょう。それでも、小数点以下19桁または15桁まで計算していれば、何十億円もの歳入があったとしても、十分に正確な結果が得られます。

68KのMacintoshと、WindowsやPower Macintoshで1/3の値が異なるのはなぜでしょうか?

68KのMacintoshでは、オペレーティングシステムは実数を10バイト(80ビット)で格納しているのに対し、WindowsやPower Macintoshでは、実数を8バイト(64ビット)で格納しています。この結果、68KのMacintoshでは実数の有効数字が19桁で、WindowsやPower Macintoshではそれが15桁になります。

それでも、いずれのコンピュータでも式1/3*3から1が戻るのはなぜでしょうか?

コンピュータは近似的に計算を実行できるだけにすぎません。したがって、数字を比較したり計算する時には、コンピュータは実数を数学的なオブジェクトとしてではなく、近似値として処理します。この例では、0.3333...を3倍すると0.9999...になります。

0.9999...と1の差は非常に小さいため、コンピュータはこの結果を1と等しいとみなし、1を戻します。この問題については、SET REAL COMPARISON LEVELコマンドについての説明を参照してください。

実数には2つの側面があるため、以下の2つの点について区別しておかなければなりません:

・実数がどのように計算され、比較されるか

・実数が画面やプリンタにどのように出力されるか

もともと4Dは、68KのMacintoshで提供されていた標準の10バイトデータ型を使用して実数を処理していました。その結果、ディスクのデータファイルに格納される実数は、この形式を使用して保存されます。68KのMacintosh、Windows、Power Macintoshのそれぞれのバージョンの4Dの間で互換性を保つために、4Dのデータファイルでは引き続き10バイトデータ型を使用して実数を保存しています。浮動小数点計算はWindowsまたはPower Macintoshで8バイト形式を使用して実行されるため、4Dは値を10バイト形式から8バイト形式に変換したり、8バイト形式から10バイト形式に変換しています。このため、68KのMacintoshで保存された実数が含まれるレコードをWindowsやPower Macintoshにロードする場合には、精度の一部が失われる(有効数字が19桁から15桁になる)可能性があります。一方、WindowsやPower Macintoshで保存された実数が含まれるレコードを68KのMacintoshにロードした場合には、精度が失われることはありません。基本的には、68KのMacintoshのデータベースを使用した場合でも、WindowsやPower Macintoshのデータベースを使用した場合でも、浮動小数点計算では、有効数字19桁ではなく15桁までを信頼するようにします。

SET DATABASE PARAMETER コマンドを使用して、実数の表示を簡約する際にスキップする桁数を指定できます (デフォルトは4桁)。


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次