FLOOR |
Au plus bas |
---|---|
Langage C | math.h |
Syntaxe
double floor(double n); |
Paramètres
Nom | Description |
---|---|
n | Ce paramètre permet d'indiquer l'expression contenant le nombre à traiter |
Description
Cette fonction retourne la valeur minimale d'un nombre, soit l'entier le plus proche inférieur ou égal au nombre.
Algorithme
MODULE FLOOR(x) SI x est un entier ALORS RETOURNE x SINON SI x est positif ALORS RETOURNE le plus grand entier inférieur ou égal à x FIN SI SI x est négatif ALORS RETOURNE le plus petit entier supérieur ou égal à x FIN SI FIN SI |
Remarques
- Si vous avez un message d'erreur «undefined reference to `floor'» avec un compilateur «gcc», vous devrez probablement rajouter le paramètre «-lm» afin de lui indiquer qu'il faut inclure les bibliothèques mathématique à vos projets.
- A partir de la norme C99, les fonctions floorf et floorl sont proposé pour traiter des nombres avec des types de données plus petits ou plus grand que la fonction floor. Voici leurs prototypes :
- Arrondi vers le bas : La fonction floor en C renvoie le plus grand entier inférieur ou égal à un nombre donné. Contrairement à une simple troncature supprimant la partie décimale, floor s'assure que le résultat est toujours arrondi vers le bas, même pour les nombres négatifs. Par exemple, floor(-2.3) renvoie -3.0.
- Type de retour et signature : La fonction floor a la signature double floor(double x) et retourne un résultat de type double. Des variantes existent comme floorf pour les flottants simples et floorl pour les nombres en double précision étendue, permettant de s'adapter à divers besoins en précision.
- Conformité aux standards : floor est conforme aux standards C89/C90 et C99, ce qui garantit une grande portabilité. Elle est incluse dans la bibliothèque mathématique <math.h>, donc il est nécessaire de la lier avec l'option -lm dans certains compilateurs comme gcc.
- Cas pour les entiers : Si le paramètre passé à floor est déjà un entier, la fonction retourne directement cet entier sans effectuer de modifications. Par exemple, floor(5.0) ou floor(-7.0) renvoient respectivement 5.0 et -7.0. Cela la rend très efficace dans de tels cas.
- Compatibilité avec les valeurs spéciales : floor gère correctement des valeurs spéciales comme NaN (Not a Number) ou Inf (infinis). Si le paramètre est NaN, la fonction retourne également NaN. Si le paramètre est une infinité, le résultat est cette infinité, sans modification.
- Applications pratiques : floor est couramment utilisée dans les algorithmes nécessitant une segmentation ou une division en blocs, comme le calcul d'indices dans des tableaux ou la gestion de coordonnés dans des espaces discrétisés. Elle est aussi utilisée en traitement d'images ou dans les jeux pour placer des objets sur une grille.
- Différence avec ceil et trunc : Contrairement à ceil, effectuant un arrondi vers le haut, ou trunc, supprimant simplement la partie décimale, floor se distingue par son comportement consistant à toujours aller vers le bas, quelle que soit la valeur du paramètre. Cette distinction est importante pour les calculs impliquant des nombres négatifs.
long double floorl(long double arg); float floorf(float arg); |
Exemple
Voici un exemple montrant une utilisation plus classique de cette fonction :
Essayer maintenant !
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
-
- int main()
- {
- printf("FLOOR(1)=%f\n",floor(1));
- printf("FLOOR(1.1)=%f\n",floor(1.1));
- printf("FLOOR(1.7)=%f\n",floor(1.7));
- printf("FLOOR(-1)=%f\n",floor(-1));
- printf("FLOOR(-1.1)=%f\n",floor(-1.1));
- printf("FLOOR(-1.7)=%f\n",floor(-1.7));
- printf("FLOOR(30.2)=%f\n",floor(30.2));
- printf("FLOOR(-35.4)=%f\n",floor(-35.4));
- return 0;
- }
on obtiendra le résultat suivant :
FLOOR(1)=1.000000FLOOR(1.1)=1.000000
FLOOR(1.7)=1.000000
FLOOR(-1)=-1.000000
FLOOR(-1.1)=-2.000000
FLOOR(-1.7)=-2.000000
FLOOR(30.2)=30.000000
FLOOR(-35.4)=-36.000000
Voir également
Langage de programmation - C - Référence procédures et fonctions - exp
Langage de programmation - C - Référence procédures et fonctions - pow
Langage de programmation - C++ - Référence procédures et fonctions - floor
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 103.
Dernière mise à jour : Mardi, le 28 juillet 2015