2017-06-07 2 views
1

Im Allgemeinen, was ist der Fehler, den ich bekomme, wenn ich eine Gleitkommazahl verwende? Insbesondere ist es sicher, GPS-Koordinaten als doppelte Gleitkommazahlen zu speichern?Wie kann man die Fließkomma-Genauigkeit erkennen? Speziell für GPS-Koordinaten ist es sicher, doppelt zu verwenden?

Ich denke ja. Angenommen, "sicher" wäre "6 Dezimalstellen, dasselbe wie Google Maps". Ich habe den folgenden Code zur Überprüfung verwendet. Es verwendet Math.ulp von Java.

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; 
       } 

       } 

     } 
} 

Von diesem bekomme ich den schlimmsten Fehler ist 2.8421709430404007E-14, die sicher ist.

Können Sie mir versichern, dass diese Argumentation korrekt ist?

+0

Ich denke, es hängt davon ab, wofür Sie sie verwenden. Für Berechnungen (z. B. von Entfernungen oder Ähnlichem) können Sie Doubles verwenden. Für die Speicherung verwende ich lieber Strings oder Fixpunkttypen (d. H. Skalierte Ganzzahlen oder Longs). –

+0

Verwenden Sie einfach Doppel. Die Genauigkeit einer doppelten> Genauigkeit von GPS, gibt es keine Genauigkeitsverlust. Es macht keinen Sinn, einen Fixpunkt zu verwenden, wenn es keinen Genauigkeitsverlust gibt und wenn fast jede API zu Beginn mit Doppeln und nicht mit Strings versorgt wird. –

Antwort

2

Ja, Doppeltasten haben 15 Stellen mit relativer Genauigkeit, was ungefähr der Auflösung von GPS-Koordinaten im Nanometerbereich entspricht.

Verwandte Themen