Déterminer le nombre de chiffres dans un entier est une tâche courante en programmation. Bien que diverses approches existent, il est crucial d'optimiser les performances, en particulier lorsqu'il s'agit de grands entiers.
Pour un comptage efficace des chiffres, l'utilisation d'une table de recherche est une solution optimale. Si la taille de l'entier est connue, la table de recherche offre un accès plus rapide que l'approche logarithmique.
Voici une implémentation d'une solution générique qui gère à la fois les entiers positifs et négatifs :
<code class="c++">template <class T> int numDigits(T number) { int digits = 0; if (number < 0) digits = 1; // handle negative numbers while (number) { number /= 10; digits++; } return digits; }
Pour améliorer En outre, des optimisations de spécialisation partielles peuvent être appliquées pour des tailles entières spécifiques. Voici un exemple pour des entiers de 64 bits :
<code class="c++">template <> int numDigits(int64_t x) { if (x == INT64_MIN) return 19 + 1; if (x < 0) return digits(-x) + 1; if (x >= 100000000000000000) { if (x >= 1000000000000000000) return 19; return 18; } // ... (similar code for other ranges) return 1; }</code>
Cette implémentation optimisée tire parti de valeurs de plage spécifiques pour minimiser le temps de calcul.
De plus, des spécialisations partielles peuvent également être utilisées pour des tailles entières plus petites. , tels que les entiers 32 bits et 8 bits.
En utilisant des tables de recherche et en optimisant des tailles d'entiers spécifiques, cette méthode fournit une solution efficace et évolutive pour déterminer le nombre de chiffres dans un entier en C .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!