La fonction ronde en C

Jinku Hu 12 octobre 2023
  1. Utilisez la fonction round pour arrondir le nombre à virgule flottante à l’entier le plus proche et renvoyer le nombre à virgule flottante
  2. Utilisez la fonction lround pour arrondir le nombre à virgule flottante à l’entier le plus proche et renvoyer le type intégral
  3. Utilisez la fonction ceil pour arrondir le nombre à virgule flottante à la plus petite valeur intégrale non inférieure à l’argument
La fonction ronde en C

Cet article explique plusieurs méthodes d’utilisation de la fonction round en C.

Utilisez la fonction round pour arrondir le nombre à virgule flottante à l’entier le plus proche et renvoyer le nombre à virgule flottante

La fonction round fait partie des utilitaires mathématiques de la bibliothèque standard C définis dans le fichier d’en-tête <math.h>. Il existe trois fonctions dans cette famille - round, roundf et roundl. Ces fonctions sont destinées à différents types de nombres à virgule flottante et chacune renvoie la valeur de type correspondante. Notez que les fichiers source, y compris l’en-tête math, doivent être compilés en utilisant l’indicateur -lm pour lier le code de la bibliothèque. Dans l’exemple de code suivant, nous montrons les conversions pour plusieurs valeurs littérales float et sortons les résultats vers la console. Notez que round arrondit essentiellement à partir du zéro. Si la valeur intégrale, -0, +0, NaN ou INFINITY est passée en argument, la même valeur est renvoyée.

#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);
}

Production:

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

Utilisez la fonction lround pour arrondir le nombre à virgule flottante à l’entier le plus proche et renvoyer le type intégral

La fonction lround, quant à elle, arrondit à l’entier le plus proche et renvoie la valeur intégrale. Il y a six fonctions dans cette famille, dont la moitié renvoie long int comme valeur arrondie et d’autres - long long int. lround similaire à la famille round arrondit les nombres réels à mi-chemin de zéro.

#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);
}

Production:

lround(+2.3) = 2
lround(+2.5) = 3
lround(+2.7) = 3
lround(-2.3) = -2
lround(-2.5) = -3
lround(-2.7) = -3

Utilisez la fonction ceil pour arrondir le nombre à virgule flottante à la plus petite valeur intégrale non inférieure à l’argument

Alternativement, la fonction ceil peut être utilisée pour arrondir le nombre à virgule flottante donné à la plus petite valeur entière qui n’est pas inférieure à l’argument lui-même. Semblable à la fonction round, il existe également trois fonctions dans cette famille - ceil, ceilf et ceill à utiliser respectivement pour les types float, double et long double. Notez que nous incluons le signe + dans la chaîne de spécification prinf, et il affiche automatiquement les signes correspondants pour les arguments arrondis.

#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);
}

Production:

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
Auteur: 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

Article connexe - C Math