Java 获取数字位数的最快方法?

Java 获取数字位数的最快方法?,java,string,math,numbers,int,Java,String,Math,Numbers,Int,我确实检测到了数字的位数。例如,329586有6位 我所做的只是将数字解析为字符串,并获取字符串长度,如: number.toString().length() 但是,有没有最快的方法来计算数字的位数?我必须多次使用此方法,因此我认为使用toString()会影响性能 谢谢 Math.floor(Math.log10(number) + 1) // or just (int) Math.log10(number) + 1 例如: int number = 123456; int length

我确实检测到了数字的位数。例如,
329586
6位

我所做的只是将数字解析为字符串,并获取字符串长度,如:

number.toString().length()
但是,有没有最快的方法来计算数字的位数?我必须多次使用此方法,因此我认为使用
toString()
会影响性能

谢谢

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

这个自制的解决方案怎么样:

int noOfDigit = 1;
while((n=n/10) != 0) ++noOfDigit;
试试这个:

公共类主{
公共静态void main(字符串[]args){
long num=-23;
整数位数=0;
if(num<0)
num*=(-1);
如果(num<10&&num>=0)
数字=1;
否则{
while(num>0){
num/=10;
数字++;
}
}
系统输出打印项次(“位数:+位数);
}
}

你所说的数字是指整数吗?它也起作用了,谢谢!:D这不是最快的方法,请参见下面的答案:此方法需要单独处理number==0的情况。是的,这不适用于零!虽然不是最快或最通用的解决方案,但它非常优雅!也谢谢你!:但是,只是说,它不适用于0和1…现在它适用于0,1和负数。对于10,它将返回1!很抱歉更新了我的答案。
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);
    }
}