Vi las dos variantes que la gente usa ... ¿No sabes que la flotación no es suficiente para iOS5?Almacenamiento de coordenadas desde la ubicación central en Core Data. Flotar o doble?
Respuesta
Un flotador de 32 bits tiene 7 dígitos de precisión, un doble de 64 bits tiene 15 dígitos de precisión.
Con 7 dígitos de precisión, la longitud máxima de 179.9999 solo es precisa hasta 0.0001 grados. Un grado es de aproximadamente 60 millas náuticas, por lo que 0.0001 grados es de aproximadamente 10 metros (33 pies). Si desea almacenar valores lat/lon más precisos, debe usar un número entero doble (o un número entero fijo).
En estos días no importa mucho.
Una doble es solo una ranura de valor flotante que puede contener el doble de precisión que un flotador estándar. A menos que lo obligue a usar un flotador, el compilador Objective-c almacenará realmente todos los valores flotantes como un doble.
Los flotadores y dobles son en gran medida remanentes de los viejos tiempos cuando la memoria era muy apretada. En estos días, generalmente solo los ve diferentes cuando se trata de formatear cadenas. Es lo mismo con varios tamaños de int. Todos los tamaños se almacenan en el tamaño más grande disponible a menos que obligue al compilador a hacer lo contrario.
por responder que la precisión que tiene al utilizar flotadores o dobles que he llegado con esta respuesta:
caso exactitud peor al almacenar números decimales para E/W y N/S:
- flotador: 1.6955566 metros
- doble: 3.1582203519064933E-9 meters. (Eso es 3 nm)
Usted puede hacer los cálculos usted mismo mediante la ejecución de este en Java:
public class Main {
public static void main(String[] args) {
System.out.println(Math.ulp((float) 180) * 60 * 1852);
System.out.println(Math.ulp((double) 180) * 60 * 1852);
}
}
Sé que esto es un hilo viejo, pero lo encontré en la búsqueda del problema. Float es probablemente suficiente para la mayoría de las aplicaciones. El GPS del dispositivo de Apple en cuestión probablemente no tenga mejor precisión que eso. Pero es más fácil almacenar dobles siempre y cuando los datos no sean una preocupación.
Recientemente, creo que es más fácil de almacenar coordenadas en la base de datos como NSValue
en el atributo transformable:
[NSValue valueWithMKCoordinate:coordinate]
- 1. ¿Cómo modelarías la ubicación en Core Data?
- 2. Almacenamiento de NSNumber opcional en Core Data
- 3. Almacenamiento de UUID en Core Data
- 4. ¿Debo usar doble o flotar?
- 5. ¿Cuál es la capacidad de almacenamiento máxima de Core Data?
- 6. Almacenamiento de UIImage en Core Data con la nueva bandera de Almacenamiento externo
- 7. Almacenamiento de un NSImage en un Core Data Model
- 8. ¿Debo guardar en plist o Core Data?
- 9. ¿Cómo almacenar CLLocation usando Core Data (iPhone)?
- 10. ¿Cómo se obtiene la zona horaria local en función de las coordenadas de ubicación central?
- 11. NSCoding VS Core data
- 12. iPhone Core Data Relationship
- 13. Core Graphics sistema de coordenadas
- 14. Relaciones indexadas en Core Data
- 15. Core Data Memory Management
- 16. Core Data y multiprocesamiento
- 17. Core-Data willSave: método
- 18. Core data/NSFetchedResultsController error
- 19. la conversión de doble a flotar en Java
- 20. Introducción a Core Data
- 21. Prueba Core Data Application
- 22. iOS Core Data - Relationships
- 23. core data iCloud fusionar protocolo
- 24. Eliminar objeto en Core Data
- 25. Nuevo en Core Data para iphone
- 26. Terminación agraciada de NSApplication con Core Data y Grand Central Dispatch (GCD)
- 27. ¿Está almacenando imágenes en Core Data o como archivo?
- 28. Core Data-predicado con fechas
- 29. Serializar doble y flotar con C
- 30. al obtener la ubicación de coordenadas
me he dado cuenta de que yo también necesito hacer Pitágoras con el mayor error en el otra dirección también. Así que un poco peor. :) – Gussoh