Problema con itoa

Hola,

Resulta,que estoy mostrando por un lcd valores de un float de esta manera (2 decimales):

char temp[12];
lcd.printIn(itoa((long)fx,temp,10));
lcd.printIn(".");
lcd.printIn(itoa(abs(fx-(long)fx)*100,temp,10));

Donde fx es una variable float, la cual he hecho unos cálculos previamente.
En general, me funciona bien salvo con números negativos entre 0 y -1, que lo saca como positivo. No le pone el signo. En cuanto es menor que -1, ya le pone el signo.

¿alguien sabe que puede estar pasando? :-/

Gracias!!

Igor R.

Buenas,

Preguntando por los foros en ingles, resulta que itoa tiene algunos problemillas si lo usas como he puesto yo el código en el primer post....

  1. Cuando intentas escribir "2.05", en la pantalla te sale "2,5". Es decir, se "come" los ceros despues del punto decimal.
  2. No muestra el signo entre -1 a 0.

Hablan de ello aqui => http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1207226548/1#1

Al final, como sólo muestro dos cifras decimales, y no quería cambiar mucho el código, he métido los cambios en azul y está funcionando.... :wink: (en este ejemplo, muestro el valor convertido de una NTC)
Aunque lo suyo es implementar una función.

//... previous code

float fbar;
// APROXIMACIÓN POLINOMIAL ORDEN 3
fanalog5=fanalog5/1000;
fbar=(fanalog5)(fanalog5)(fanalog5)(-4.842)+(fanalog5)(fanalog5)(39.692)-(f
analog5)
(122.44)+171.18;

lcd.cursorTo(2,6);

if( fbar < 0.0){
lcd.printIn("-");
fbar = -fbar;
}

lcd.printIn(itoa((long)fbar,temp,10));
lcd.printIn(".");
fbar=abs(fbar-(long)fbar)*100;
if (fbar<10.0) lcd.printIn("0");
lcd.printIn(itoa(fbar,temp,10));
lcd.printIn(" ");

//...code