2012-08-22 27 views
6

que estoy tratando de conseguir un gps de la lectura de una cadena a un flotador en mi Arduino. La cadena tiene todos maneja bien todos los dígitos, pero cuando la divido para obtener un flotante pierdo 4 de mis dígitos. Aquí está mi código:pérdida de dígitos cuando los flotadores en división C++ (Arduino)

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

Usando .toFloat en una cadena que todavía tiene el punto decimal en el resultado es el mismo, sólo dos números después del punto decimal.

Números de ejemplos:

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

Respuesta

5

Bien, estaba equivocado, la función de impresión predeterminada solo usa dos dígitos de precisión. Así que tuve que agregar cuántos dígitos quería para la declaración.

print(lat, 20); 

dará a 20 dígitos de precisión en el monitor serie, donde

print(lat) 

sólo da dos.

0

que desee utilizar un doble en lugar de un flotador.

Ver http://en.wikipedia.org/wiki/Primitive_data_type y http://en.wikipedia.org/wiki/Double_precision#Double-precision_examples para más información.

+1

Obtengo el mismo resultado. En Arduino, los dobles no son más precisos que los flotadores. Pueden contener la misma cantidad de dígitos. http://arduino.cc/en/Reference/Double – Steven

+0

Ya veo, eso es bastante desafortunado .. Gracias por la sugerencia – ZnArK