分析の計算の精度について

AFの分析を用いて浮動小数点の計算を行う際の精度について教えてください。

分析機能を使って計算した結果と、Excelや手計算で計算した結果で誤差が発生することを確認しているのですが、どの程度の誤差が発生するのでしょうか?

 

以下のような計算などを試しました。

・AFに登録した属性を通して、Float32のタグに-1.5392532を登録したところ、-1.53925323が登録された。

・上記の属性をさらに編集しようとしたところ、-1.539253が編集対象として表示された。

・上記の属性を分析の入力とし、Float64のタグに出力すると、-1.5392529964447021が出力された。

・15程度のFloat64の数値(整数部3桁)の入力値の平均をとると小数部4桁目で誤差が発生した。

  • どの程度の誤差が発生し得るかを確認されたいとのこと、承知いたしました。

    結論から申し上げますと、その誤差がどの程度になるかにつきましてはケースバイケースです。

    以下に誤差が発生するケースを三つお知らせいたします。

     

    1.第一に誤差が発生するかはデータ型に依存します。

    浮動小数点数のインプットにおいて、異なるデータ型で返されるのであれば、そのアウトプットに誤差が発生するからです。

    ※注意:異なるデータ型で計算すればするほど、誤差が大きくなる傾向がございます。

     

    2.また、Float32(Single)は最大で7桁まで正確に表示することができ、Float64(Double)は最大15桁まで正確に表示することが可能です。

    こちらは仕様です。

    ですので、ご質問いただいた-1.5392532については、Singleであれば、正確に表示できるのは最大で1.539253(計七つの数字)までということになります。

     

    下記の例は、誤差が可能な限り発生しないよう、Singleの属性にFloat32のタグを設定し、Doubleの属性にFloat64のタグを設定することで、入出力時のデータ型を合わせてから、検証したものです。

     

    例:

    -1.5392532という数値をデータ型がSingleの属性に入力すると、8桁目から0。


    pastedImage_1.png.png
     

     

    データサーバーに格納された値。

     
    pastedImage_2.png.png

     

    今度は-21.5392532(計9桁)という数値をデータ型がSingleの属性に入力すると、同様に8桁目から0。

     
    pastedImage_3.png.png

     

    データサーバーに格納された値。

     
    pastedImage_4.png.png

     

    -21.5392532をデータ型がDoubleの属性に入れると、全て表示可能(最大15桁まで正確に表示できるので)。


    pastedImage_5.png.png
     

     

    データサーバーに格納された値。


    pastedImage_6.png.png

     

    3.その他関係する部分としては、値を表示しているアプリケーションに依存します。

    どのようにその値が出力及び表示されるようになっているかは、そのアプリケーションにより異なり得るからです。

    例えば、Excelでしたら、こちらで十分に正確でなくなる場合が紹介されています。

     

    以上の通り、扱われている値は整数でなく浮動小数点数なのですから、どの程度の誤差になるかにつきましては、どのように設定し、どの値を入力して、どのアプリケーションの仕様に準じて出力・表示されるかに依存し、ケースバイケースです。