¿Cómo truncar un número con un punto decimal en un int? ¿Cuál es la función de esto?

El problema ocurre cuando hago una operación de división. Me gustaría saber a quién se debe truncar un número con un punto decimal en un número entero como 2, 4, 67.

Se trunca automáticamente si asigna un valor a la variable “int”:

int c; c = a/b; 

O puedes lanzar así:

 c = (int) (a/b); 

Esto lo trunca incluso si c se define como flotante o doble.

Por lo general, el truncamiento no es lo mejor (depende de lo que quieras lograr, por supuesto). Normalmente el resultado se redondea así:

 c= round(a/b,0); 

Es más inteligente porque las rondas resultan correctamente. Si usa Linux, puede obtener fácilmente una referencia con “man round” sobre los tipos de datos exactos, etc.

Puede usar la función trunc() definida en math.h Eliminará la parte fraccionaria y devolverá el número entero más cercano que no sea mayor que el número dado.

Así es como se define:

 double trunc(double x); 

A continuación se muestra cómo puedes usarlo:

 double a = 18.67; double b = 3.8; int c = trunc(a/b); 

Puede consultar man trunc en Linux para obtener más detalles sobre esta función. Como se señaló en las respuestas anteriores, puede convertir el resultado de la división en un entero o se truncará automáticamente si se asigna a un entero, pero si está interesado en conocer una función de C que hace el trabajo, entonces trunc() es la opción.

 int result = (int)ceilf(myFloat ); int result = (int)roundf(myFloat ); int result = (int)floor(myFloat); float result = ceilf(myFloat ); float result = roundf(myFloat ); float result = floor(myFloat); 

Creo que te será de ayuda.

La conversión manual o implícita de un tipo de punto flotante a un tipo integral provoca el truncamiento automático hacia cero. Tenga en cuenta que si el tipo integral no es lo suficientemente grande para almacenar el valor, se producirá un desbordamiento. Si simplemente necesita imprimir el valor con todo más allá del punto decimal truncado, use printf() :

 printf("%.0f", floor(float_val)); 

Como Tõnu Samuel ha señalado, la invocación de printf() redondeará el parámetro de punto flotante de forma predeterminada.