Speichern der Koordinate vom Core-Standort in den Core-Daten. Float oder Double?

8

Ich habe beide Varianten gesehen, die Leute benutzen ... Weiß einfach nicht, ist Float nicht genug für iOS5?

    
Shmidt 21.10.2011, 15:39
quelle

4 Antworten

21

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.

    
progrmr 21.10.2011, 18:10
quelle
3

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.

    
TechZen 21.10.2011 15:52
quelle
2

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:

  • Float: 1,6955566 Meter
  • doppelt: 3.1582203519064933E-9 Meter. (Das sind 3 nm)

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.

    
Gussoh 15.01.2014 19:07
quelle
2

Ich denke, es ist einfacher, Koordinaten in Core Data als NSValue im transformierbaren Attribut zu speichern:

%Vor%

Ссылка

    
Shmidt 18.02.2014 17:11
quelle

Tags und Links