web-dev-qa-db-fra.com

Le moyen le plus rapide d’obtenir le nombre de chiffres d’un numéro?

J'ai détecté la quantité de chiffres sur un nombre. Par exemple, 329586 a 6 chiffres.

Ce que j’ai fait, c’est simplement d’analyser le nombre en chaîne et d’obtenir la longueur de la chaîne, comme ceci:

number.toString().length()

Mais existe-t-il un moyen plus rapide de compter les chiffres sur un nombre? Je dois utiliser cette méthode plusieurs fois. Je pense donc que l'utilisation de toString() peut avoir un impact sur les performances.

Merci.

9
BloodShura
Math.floor(Math.log10(number) + 1)
// or just (int) Math.log10(number) + 1

Par exemple:

int number = 123456;
int length = (int) Math.log10(number) + 1;
System.out.println(length);

SORTIE:

6
36
Eng.Fouad

que diriez-vous de cette solution homebrewed:

int noOfDigit = 1;
while((n=n/10) != 0) ++noOfDigit;
7
TravellingGeek

Essaye ça :

Exemple de travail

public class Main {
    public static void main(String[] args) {
        long num = -23;
        int digits = 0;
        if (num < 0) 
            num *= (-1);
        if (num < 10 && num >= 0)
            digits = 1;
        else {
            while(num > 0) {
                num /= 10;
                digits++;
            }
        }
        System.out.println("Digits: " +digits);
    }
}
0
Zelldon