Hola a todos, llevo toda la tarde dandole vueltas al tema, no se como puedo pasar un valor float a int:
Tengo varios DS18B20 y un sensor DTH11 y de estos sensores quiero conseguir un valor con solo dos decimales de precisión. Para eso, creo que tengo que pasar de float a int, Pero no puedo utilizar Cast por que se comelos decimales.
int i;
float f;
f = 3.6;
i = (int) f; // ahora i es 3
En paskal se podia utilizar Entero := Trunc (ValorReal1); pero no encontrado una equivalencia.
para pasar un float a int se utiliza la función "int(x);" donde x es el valor que quieres convertir.
pero si utilizas int() perderas los decimales, solo te regresara la parte positiva.
si quieres los dos decimales puedes hacer este truco:
int positivo;
int decimal;
float x;
positivo = int(x);
decimal = int((positivo - x) * 100);
con esto ahora tienes la parte positiva y la parte negativa separadas como tipo entero, solo tendrías que acomodarla apropiadamente en la salida y poner un punto decimal entre estas dos.
Continuando con lo que decía ehrja, para separar las partes entera y decimal, también puedes trabajar en fracciones de la unidad (décimas, centésimas...) y realizar el truco a la hora de presentarlas:
huy disculpas, que pelotas, en realidad con positivo refiero a la parte entera.
seguro escribí lo primero que se me vino a la cabeza, y por eso te confundí, disculpas por eso.
Si tienes números negativos también debe funcionar.
//---------------------
Ejemplo
-10.10 * 100 = -1010