2011-10-21 15 views

Respuesta

21

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).

3

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.

2

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.

+0

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