Ein 32-Bit-Gleitkommazahlwert enthält 7 Stellen der Genauigkeit, ein 64-Bit-Doppelpunkt enthält 15 Stellen der Genauigkeit.
Mit 7 Stellen der Genauigkeit ist die maximale Länge von 179.9999 nur bis 0,0001 Grad genau. Ein Grad ist ungefähr 60 Seemeilen, also 0,0001 Grad ist ungefähr 10 Meter (33 Fuß). Wenn Sie genauere Breiten- / Längenwerte speichern möchten, müssen Sie eine doppelte (oder eine feste Ganzzahl) verwenden.
Heutzutage spielt es keine Rolle mehr.
Ein Double ist nur ein Float-Wert-Slot, der doppelt so genau wie ein Standard-Float sein kann. Wenn Sie es nicht zwingen, einen Gleitkommawert zu verwenden, speichert der Objective-c-Compiler tatsächlich alle Gleitkommawerte als Double.
Floats und Doubles sind größtenteils Überbleibsel aus den alten Zeiten, als die Erinnerung extrem eng war. In diesen Tagen sehen Sie sie normalerweise nur anders, wenn es um die Formatierung von Strings geht. Es ist das gleiche mit verschiedenen Größen von Int. Alle Größen werden in der größten verfügbaren Größe gespeichert, sofern Sie den Compiler nicht dazu zwingen, etwas anderes zu tun.
Um zu antworten, welche Genauigkeit Sie haben, wenn Sie Floats oder Double verwenden, habe ich diese Antwort gefunden:
Worst Case Genauigkeit beim Speichern als Dezimalzahlen für E / W und N / S:
Sie können die Berechnungen selbst durchführen, indem Sie dies in Java ausführen:
%Vor%Ich weiß, dass dies ein alter Thread ist, aber ich habe ihn gefunden, als ich nach dem Problem gesucht habe. Float ist wahrscheinlich für die meisten Anwendungen ausreichend. Das GPS des betreffenden Apple-Geräts hat wahrscheinlich keine bessere Genauigkeit als das. Es ist jedoch einfacher, Doubles zu speichern, solange Daten keine Rolle spielen.
Tags und Links core-data core-location ios5