Pequeño error al sumar floats entre si (o al pasar de string a float ) ¿por que?

:astonished:Pues tengo este codigo:

String ww = ery[0] + ery[1] + "." + ery[2] + ery[3] + ery[4];

float k2 = StringToFloat(ww);

Serial.println(k2,6);
Serial.println(ery[4]);

la funcion la copie de algun ejemplo en el foro:

float StringToFloat(String str){
char carray[str.length() + 1]; //determine size of the array
str.toCharArray(carray, sizeof(carray)); //put str into an array
return atof(carray);
}

Pues resulta que siendo el valor de ery[4] 50, el resultado impreso en el monitor serie es :

39.118247
50

Cambia el 50 por un 47... Teneis idea de porque??? el resto de los numeros los pone correctamente (39,11 y 82)

Un saludo y gracias por vuestro tiempo.

Otro ejemplo mucho mas descarado:

float t = 39;
float t2 = 0.118250;
float t3 = t + t2;

Serial.println(t,6);
Serial.println(t2,6);
Serial.println(t3,6);

Resultado en monitor serie:

39.000000
0.118250
39.118251

Seguro que es cualquier tonteria que no hago bien, pero no veo por donde puede estar el error...

No ha mucho que debatí con Arduka sobre algo similar. Échale un vistazo al hilo, por si te puede servir de ayuda. Creo que el problema en resumen pudiera ser que has llegado al límite de precisión de float. ¿Necesitas trabajar con datos de esa precisión realmente? Prueba entonces con double para tener más precisión, aunque no esperes que un número decimal coincida siempre exactamente con un float o double binario.

necesito esa precision. Es una coordenada geografica. SI le quito cifras la dejo coja... Le echare un ojo al post y probare con double. :slight_smile:

Gracias.