La función redonda en C
-
Utilice la función
round
para redondear el número de coma flotante al entero más cercano y devolver el número de coma flotante -
Utilice la función
lround
para redondear el número de punto flotante al entero más cercano y devolver el tipo integral -
Utilice la función
ceil
para redondear el número de punto flotante al valor integral más pequeño no menor que el argumento
Este artículo explicará varios métodos de cómo utilizar la función ronda
en C.
Utilice la función round
para redondear el número de coma flotante al entero más cercano y devolver el número de coma flotante
La función round
es parte de las utilidades matemáticas de la biblioteca estándar de C definidas en el archivo de encabezado <math.h>
. Hay tres funciones en esta familia: round
, roundf
y roundl
. Estas funciones son para diferentes tipos de números de punto flotante y cada una devuelve el valor de tipo correspondiente. Tenga en cuenta que los archivos de origen, incluido el encabezado math
, deben compilarse utilizando el indicador -lm
para vincular el código de la biblioteca. En el siguiente código de ejemplo, demostramos las conversiones para múltiples valores literales float
y enviamos los resultados a la consola. Observe que round
esencialmente se redondea desde cero. Si el valor integral, -0
, +0
, NaN
o INFINITY
se pasa como argumento, se devuelve el mismo valor.
#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("round(+2.3) = %+.1f\n", round(2.3));
printf("round(+2.5) = %+.1f\n", round(2.5));
printf("round(+2.7) = %+.1f\n", round(2.7));
printf("round(-2.3) = %+.1f\n", round(-2.3));
printf("round(-2.5) = %+.1f\n", round(-2.5));
printf("round(-2.7) = %+.1f\n", round(-2.7));
exit(EXIT_SUCCESS);
}
Producción :
round(+2.3) = +2.0
round(+2.5) = +3.0
round(+2.7) = +3.0
round(-2.3) = -2.0
round(-2.5) = -3.0
round(-2.7) = -3.0
Utilice la función lround
para redondear el número de punto flotante al entero más cercano y devolver el tipo integral
La función lround
, por otro lado, redondea al número entero más cercano y devuelve el valor integral. Hay seis funciones en esta familia, la mitad de las cuales devuelve long int
como valor redondeado y otras - long long int
. lround
similar a la familia round
redondea los números reales a mitad de camino desde cero.
#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("lround(+2.3) = %ld\n", lround(2.3));
printf("lround(+2.5) = %ld\n", lround(2.5));
printf("lround(+2.7) = %ld\n", lround(2.7));
printf("lround(-2.3) = %ld\n", lround(-2.3));
printf("lround(-2.5) = %ld\n", lround(-2.5));
printf("lround(-2.7) = %ld\n", lround(-2.7));
exit(EXIT_SUCCESS);
}
Producción :
lround(+2.3) = 2
lround(+2.5) = 3
lround(+2.7) = 3
lround(-2.3) = -2
lround(-2.5) = -3
lround(-2.7) = -3
Utilice la función ceil
para redondear el número de punto flotante al valor integral más pequeño no menor que el argumento
Alternativamente, la función ceil
se puede utilizar para redondear el número de punto flotante dado al valor entero más pequeño que no sea menor que el argumento en sí. Al igual que la función round
, también hay tres funciones en esta familia: ceil
, ceilf
y ceill
, que se utilizarán para los tipos float
, double
y long double
, respectivamente. Tenga en cuenta que incluimos el signo +
en la cadena del especificador prinf
, y muestra automáticamente los signos correspondientes para los argumentos redondeados.
#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("ceil(+2.3) = %+.1f\n", ceil(2.3));
printf("ceil(+2.5) = %+.1f\n", ceil(2.5));
printf("ceil(+2.7) = %+.1f\n", ceil(2.7));
printf("ceil(-2.3) = %+.1f\n", ceil(-2.3));
printf("ceil(-2.5) = %+.1f\n", ceil(-2.5));
printf("ceil(-2.7) = %+.1f\n", ceil(-2.7));
exit(EXIT_SUCCESS);
}
Producción :
ceil(+2.3) = 3.000000
ceil(+2.5) = 3.000000
ceil(+2.7) = 3.000000
ceil(-2.3) = -2.000000
ceil(-2.5) = -2.000000
ceil(-2.7) = -2.000000
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook