2011-10-21 13 views

risposta

21

Un float a 32 bit contiene 7 cifre di precisione, una doppia di 64 bit contiene 15 cifre di precisione.

Con 7 cifre di precisione, la longitudine massima di 179.9999 è accurata solo fino a 0,0001 gradi. Un grado è di circa 60 miglia nautiche, quindi 0,0001 gradi è di circa 10 metri (33 piedi). Se si desidera memorizzare valori lat/lon più precisi, è necessario utilizzare un numero intero doppio o un punto fisso.

3

In questi giorni non importa molto.

Un double è solo uno slot con valore float che può contenere il doppio della precisione di un float standard. A meno che non lo forziate ad usare un float, il compilatore Objective-c memorizzerà tutti i valori float come un doppio.

I galleggianti e i doppi sono in gran parte resistenti dai vecchi tempi quando la memoria era super stretta. Di questi tempi, di solito li vedi solo quando si tratta di formattazione delle stringhe. È lo stesso con varie dimensioni di int. Tutte le dimensioni sono memorizzate nella dimensione più grande disponibile a meno che non si imponga al compilatore di fare diversamente.

2

per rispondere che la precisione si ha quando si usano carri o doppio sono venuto su con questa risposta:

caso peggiore precisione quando la memorizzazione dei numeri come decimali per E/W e N/S:

  • galleggiante: 1,6955566 metri
  • doppio: 3,1582203519064933E-9 metri. (Questo è il 3 nm)

Si può fare i calcoli da soli eseguendo questo in 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); 
    } 
} 

So che questo è un vecchio thread, ma ho trovato durante la ricerca per il problema. Float è probabilmente sufficiente per la maggior parte delle applicazioni. Il GPS del dispositivo Apple in questione probabilmente non ha una precisione migliore di quella. Ma è più semplice archiviare i doppi fintanto che i dati non sono un problema.

+0

Ho appena realizzato che ho anche bisogno di fare Pitagora con il più grande errore nel altra direzione anche. Quindi un po 'peggio. :) – Gussoh

Problemi correlati