Ejemplo
int i;
float f;
f = 3.6;
i = (int) f; // ahora i es 3
Nota
Cuando hacemos un casting de un float a un int (coma flotante a entero) el valor es truncado, no redondeado. Así que por ejemplo, tanto (int) 3.2 como (int) 3.7 acaban siendo 3.
Fuente: http://arduino.cc/es/Reference/Cast
Una ved llegados a este punto podemos pensar que cast no muy útil puesto que al utilizarlo perdemos los decimales. Pero existe un truco para pasar un valor foat a int sin perder las decimales. Imaginemos que estamos trabajando con un termometro que nos mide la temperatura en grados, y el valor entregado lo tenemos almacenado en una variable float, y nosotros queremos pasarlos a una variable tipo int con dos decimales de precisión. Para solventar este problema, tenemos que trabajar en fracciones de la unidad (décimas, centésimas, milésimas) y escoger la unidad que mejor se ajuste a nuestras necesidades.
En este ejemplo que me puso noter en el foro de arduino se ve claramente a que me refiero:
Código: |
float grados=27.56; int centGrados= grados*100.0; // centGrados=2756 Serial.print(centGrados/100); // Imprime 27 Serial.print(","); Serial.print(centGrados%100);// Imprime 56 |
Fuente: http://forum.arduino.cc/index.php?topic=208565.0 |
Gracias a ehrja y noter por enseñarme este truco.
Gracias.
ResponderEliminar¿Se te ocurre que hacer cuando la temperatura sea negativa?
Quizas en ved de utilizar una variable integer utilizar otro tipo de variale que admita velores negativos:
ResponderEliminarhttps://www.arduino.cc/en/pmwiki.php?n=Reference/VariableDeclaration
Mira donde pone eso de y analiza las distintas variables:
Some variable types
char
byte
int
unsigned int
long
unsigned long
float
double