2012-08-22 19 views
6

Sto cercando di ottenere una lettura gps da una stringa a un float sul mio Arduino. La stringa ha tutte le maniglie tutte le cifre bene, ma quando la divido per ottenere un float, perdo 4 delle mie cifre. Qui è il mio codice:Perdita di cifre durante la divisione di float C++ (Arduino)

gpsStrings[0].replace(".", ""); 
lat = gpsRawData[0].toFloat(); 
lat = lat/1000000.0; 

Utilizzando .toFloat su una stringa che ha ancora il punto decimale in esso provoca la stessa cosa, solo due numeri dopo la virgola.

numeri Esempio:

42427898 :: 42.43 - what happens 
42427898 :: 42.427898 - what I want to happen 

risposta

5

OK, ho sbagliato, la funzione di stampa predefinita utilizza solo due cifre di precisione. Quindi ho dovuto aggiungere quante cifre volevo alla dichiarazione.

print(lat, 20); 

Will dare 20 cifre di precisione sul monitor di serie in cui

print(lat) 

dà solo due.

0

si desidera utilizzare un doppio al posto di un galleggiante.

Vedere http://en.wikipedia.org/wiki/Primitive_data_type e http://en.wikipedia.org/wiki/Double_precision#Double-precision_examples per ulteriori informazioni.

+1

Ottengo lo stesso risultato. Su Arduino i doppi non sono più precisi dei galleggianti. Possono contenere lo stesso numero di cifre. http://arduino.cc/en/Reference/Double – Steven

+0

Vedo, È piuttosto spiacevole .. Grazie per il suggerimento – ZnArK

Problemi correlati