#include <math.h> // <cmath> en C++
double log10( double x );
float log10f( float x ); // C99
long double log10l( long double x ); // C99
Ces trois fonctions permettent de calculer le logarithme décimal de la valeur passée en paramètre.
log10(10) == 1
et log10(1000) == 3
.
La différence entre ces trois fonctions réside dans le type de données utilisé pour le paramètre et la valeur de retour (double, float ou long double).
Les fonctions log10f
et log10l
ont été ajoutées dans C99.
Ces fonctions renvoient le logarithme décimal de la valeur spécifiée en paramètre.
Si x est une valeur négative, ces fonctions renvoient une valeur NaN et la variable errno
sera
initialisée à la valeur EDOM
.
Si x est nulle, ces fonctions renvoient une valeur infinie et la variable errno
sera initialisée
à la valeur ERANGE
.
L'exemple de code suivant permet de calculer le nombre de chiffres utilisés pour exprimer un entier positif.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <math.h> #include <stdio.h> #include <stdlib.h> int main() { // On demande la saisie d'une valeur entière positive. printf( "Veuillez saisir un entier positif : " ); unsigned int value; scanf( "%u", &value ); // On calcul le nombre de chiffres constituant ce nombre. int digitCount = value > 0 ? 1 + (int) log10( value ) : 1; const char * end = (digitCount == 1 ? "" : "s"); printf( "La valeur %d prend %d chiffre%s.\n", value, digitCount, end ); return EXIT_SUCCESS; } |
Il est à noter que la librairie mathématique doit être ajoutée durant l'étape de "link" (édition des liens) de votre exécutable.
Cela se réalise en ajoutant l'option -lm
à votre compilateur GCC. En cas d'utilisation d'un autre compilateur, je vous renvoie vers la documentation de ce dernier.
$> gcc -o sample sample.c -lm $> ./sample Veuillez saisir un entier : 1000 La valeur 1000 prend 4 chiffres. $> ./sample Veuillez saisir un entier : 999 La valeur 999 prend 3 chiffres. $> ./sample Veuillez saisir un entier : 100 La valeur 100 prend 3 chiffres. $> ./sample Veuillez saisir un entier : 99 La valeur 99 prend 2 chiffres. $> ./sample Veuillez saisir un entier : 5 La valeur 5 prend 1 chiffre. $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :