web-dev-qa-db-ja.com

数字の桁数を取得する最も速い方法は?

数字の桁数を検出しました。たとえば、_329586_は_6_桁です。

私がやったことは、単純に数字を文字列に解析し、文字列の長さを取得することです:

_number.toString().length()
_

しかし、数字の桁を数える最速の方法はありますか?このメソッドを数回使用する必要があるため、toString()を使用するとパフォーマンスに影響を与える可能性があると思います。

ありがとう。

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

例えば:

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

出力:

6
37
Eng.Fouad

これを試して :

実施例

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