2017-06-07 9 views
1

通常、浮動小数点数を使用しているときのエラーは何ですか? 具体的には、GPS座標を倍精度浮動小数点数として保存するのは安全ですか?浮動小数点精度を知るには?具体的には、GPS座標は二重使用するのが安全でしょうか?

はいと思います。 「安全」を「6桁の6桁」とすると、Googleマップと同じです。私は検証のために次のコードを使用しました。 JavaのMath.ulpを使用します。

class Ulp { 

     public static void main(String[] args) { 

       double ulp = Math.ulp(new Double("-181")), ulp2; 

       for (double d=new Double("-181"); d<=181; d++) { 
       ulp2=Math.ulp(d); 
       if (ulp2 != ulp) { 
        System.out.println(""+ulp+" "+ulp2+" "+d); 
        ulp = ulp2; 
       } 

       } 

     } 
} 

これより、私は最悪のエラーは2.8421709430404007E-14となり、これは安全です。

この理由が正しいことを私に安心させることはできますか?

+0

私はあなたがそれらを使用するかどうかにかかっていると思います。計算(距離などの計算)には、doubleを使用できます。記憶のために、確かに、私はむしろ、文字列、または固定小数点型(すなわち、整数または長整数)を使用したいと思います。 –

+0

ダブルスを使用してください。 GPSの精度が2倍以上>精度の低下はありません。正確さが失われない場合や、ほとんどのAPIが文字列ではなく二重にフィードする場合、固定小数点の使用には何の意味もありません。 –

答えて

2

はい、倍精度は15桁の相対精度を持ちます。これは、GPS座標のおおよそのナノメートル解像度に相当します。

関連する問題