获取数字的最快数字方式?

Blo*_*ura 11 java string math int numbers

我已经检测到一个数字的位数.例如,3295866数字.

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

number.toString().length()
Run Code Online (Sandbox Code Playgroud)

但是,有一种最快的方法来计算数字上的数字吗?我必须多次使用这种方法,所以我认为使用toString()会影响性能.

谢谢.

Eng*_*uad 37

Math.floor(Math.log10(number) + 1)
// or just (int) Math.log10(number) + 1
Run Code Online (Sandbox Code Playgroud)

例如:

int number = 123456;
int length = (int) Math.log10(number) + 1;
System.out.println(length);
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

6
Run Code Online (Sandbox Code Playgroud)

  • 这不是最快的方式,请看这个答案:http://stackoverflow.com/questions/1306727/way-to-get-number-of-digits-in-an-int/1308407#1308407 (3认同)
  • 是的,这 ** 不** 为零! (2认同)

Tra*_*eek 7

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

int noOfDigit = 1;
while((n=n/10) != 0) ++noOfDigit;
Run Code Online (Sandbox Code Playgroud)