La función redonda en C

Jinku Hu 12 octubre 2023
  1. 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
  2. Utilice la función lround para redondear el número de punto flotante al entero más cercano y devolver el tipo integral
  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
La función redonda en C

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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artículo relacionado - C Math