log10()
Découvrez la fonction log10() en PHP pour calculer le logarithme en base 10 d'un nombre, avec des exemples et cas particuliers.
La fonction log10() retourne le logarithme en base 10 d'un nombre — c'est-à-dire la puissance à laquelle 10 doit être élevé pour produire ce nombre. Comme log10(1000) vaut 3 (car 10³ = 1000), c'est l'outil naturel pour travailler avec les ordres de grandeur : décibels, échelle du pH, échelle de Richter, et « combien de chiffres ce nombre possède-t-il ».
Cette page couvre la syntaxe, les cas limites (zéro, nombres négatifs, très petits nombres), les différences avec log(), ainsi que quelques formules concrètes que vous pouvez intégrer directement dans votre code.
Syntaxe
log10(float $num): float$num— la valeur dont vous souhaitez calculer le logarithme en base 10. Elle doit être un nombre positif.- Valeur de retour — le logarithme en base 10 de
$numsous forme defloat.
La relation fondamentale est simple : si log10($x) vaut $y, alors pow(10, $y) vaut $x.
Exemple de base
log10(100) vaut 2 car 10² = 100. De même, log10(1000) vaut 3 et log10(1) vaut 0, puisque tout nombre élevé à la puissance 0 est égal à 1.
Une plage de valeurs
Le résultat augmente exactement de 1 chaque fois que l'entrée est multipliée par 10, et devient négatif pour des entrées inférieures à 1 :
<?php
echo log10(1000) . "\n"; // 3
echo log10(100) . "\n"; // 2
echo log10(10) . "\n"; // 1
echo log10(1) . "\n"; // 0
echo log10(0.1) . "\n"; // -1
echo log10(0.001) . "\n"; // -3
echo log10(50) . "\n"; // 1.6989700043360187
?>Notez que log10(50) est compris entre 1 et 2, car 50 se situe entre 10¹ et 10².
Cas limites : zéro et nombres négatifs
Le logarithme de 0 est indéfini (on ne peut jamais atteindre 0 en élevant 10 à une quelconque puissance), et les logarithmes de nombres négatifs ne sont pas réels. PHP signale ces cas avec des valeurs float spéciales au lieu de lever une exception :
<?php
var_dump(log10(0)); // float(-INF)
var_dump(log10(-5)); // float(NAN)
?>Protégez-vous contre ces cas lorsque l'entrée provient de l'utilisateur :
<?php
function safeLog10($n) {
if ($n <= 0) {
return null; // log10 is only defined for positive numbers
}
return log10($n);
}
var_dump(safeLog10(100)); // float(2)
var_dump(safeLog10(0)); // NULL
?>Vous pouvez également tester un résultat avec is_nan() et is_infinite() si vous préférez appeler log10() en premier et inspecter le résultat ensuite.
log10() vs. log()
Les deux fonctions calculent des logarithmes, mais avec des bases différentes :
log10($x)— toujours en base 10. Équivalent àlog($x, 10).log($x)— base e (le logarithme naturel, ≈ 2,718) lorsqu'appelé avec un seul argument.log($x, $base)— logarithme dans la base de votre choix.
Ainsi, log10($x) et log($x, 10) retournent la même valeur ; log10() est simplement un raccourci plus rapide et plus clair pour le cas courant en base 10. Pour les logarithmes en base 2, utilisez log($x, 2). Consultez log() pour la version à usage général et log1p() pour des logarithmes précis de valeurs proches de 1.
Utilisation pratique : compter les chiffres
Une astuce courante : le nombre de chiffres d'un entier positif est floor(log10($n)) + 1.
<?php
function digitCount($n) {
return (int) floor(log10($n)) + 1;
}
echo digitCount(7) . "\n"; // 1
echo digitCount(100) . "\n"; // 3
echo digitCount(99999) . "\n"; // 5
?>Cela fonctionne car log10() indique directement l'ordre de grandeur.
Conclusion
log10() retourne le logarithme en base 10 d'un nombre — l'exposant auquel 10 doit être élevé pour atteindre cette valeur. Retenez trois points : le résultat augmente de 1 pour chaque ×10 dans l'entrée, l'entrée doit être positive (0 donne -INF, les négatifs donnent NAN), et log10($x) est identique à log($x, 10). Pour d'autres bases, utilisez log(), et explorez l'ensemble des fonctions mathématiques dans PHP Math.