Comment puis-je obtenir un compte du nombre total de chiffres d'un nombre en C# ? Par exemple, le nombre 887979789 a 9 chiffres.
J'ai bien peur que ceil(log10(10)) = ceil(1) = 1, et non 2 comme cela devrait être pour cette question !
Comment puis-je obtenir un compte du nombre total de chiffres d'un nombre en C# ? Par exemple, le nombre 887979789 a 9 chiffres.
J'ai bien peur que ceil(log10(10)) = ceil(1) = 1, et non 2 comme cela devrait être pour cette question !
Merci, c'est une bonne méthode. Mais elle n'est pas plus rapide que int count = 0 ; do { count++ ; } while ((i /= 10) >= 1) ; :(
Si votre plage de nombres comprend des négatifs, vous devrez utiliser Math.Floor(Math.Log10(Math.Abs(n)) + 1) ;
Il convient de souligner que cette méthode risque de poser des problèmes si vous traitez des nombres négatifs. (Et évidemment des décimales, mais l'exemple utilise une valeur de int
donc je suppose que ce n'est pas un problème).
Nouveau ? Pas vraiment. J'ai alloué des cordes de manière flagrante en 2010. Quel créateur de tendance. Lol. Tu as raison cependant. C'est sale !
@Klaus - log10(0) est en fait indéfini. Mais vous avez raison de dire que c'est un cas particulier qui doit être testé et traité séparément. C'est également vrai pour tout nombre entier non positif. Voir les commentaires à la réponse de Steve.
@ysap : Log10 est assez difficile à faire fonctionner correctement. Avez-vous une idée sur la façon de l'implémenter correctement pour toute la gamme des valeurs d'entrée possibles ?
Les réponses déjà données ici fonctionnent pour les entiers non signés, mais je n'ai pas trouvé de bonnes solutions pour obtenir le nombre de chiffres des décimaux et des doubles.
public static int Length(double number)
{
number = Math.Abs(number);
int length = 1;
while ((number /= 10) >= 1)
length++;
return length;
}
//number of digits in 0 = 1,
//number of digits in 22.1 = 2,
//number of digits in -23 = 2
Vous pouvez changer le type d'entrée de double
a decimal
si la précision compte, mais la décimale a aussi une limite.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
7 votes
Essayez d'utiliser .Length si cela ne fonctionne pas convertissez-le en chaîne de caractères d'abord
0 votes
Disons que x = 887979789 ; x.ToString().Count() ; vous donnera cela.
4 votes
J'ai fait quelques TESTS DE PERFORMANCE sur les meilleures réponses ci-dessous pour trouver la PLUS RAPIDE .