Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Finding the number of digits of an integer

What is the best method to find the number of digits of a positive integer?

I have found this 3 basic methods:

  • conversion to string

    String s = new Integer(t).toString();  int len = s.length(); 
  • for loop

    for(long long int temp = number; temp >= 1;) {     temp/=10;     decimalPlaces++; }  
  • logaritmic calculation

    digits = floor( log10( number ) ) + 1; 

where you can calculate log10(x) = ln(x) / ln(10) in most languages.

First I thought the string method is the dirtiest one but the more I think about it the more I think it's the fastest way. Or is it?

like image 300
daniel.sedlacek Avatar asked Jul 11 '11 15:07

daniel.sedlacek


1 Answers

There's always this method:

n = 1; if ( i >= 100000000 ) { n += 8; i /= 100000000; } if ( i >= 10000     ) { n += 4; i /= 10000; } if ( i >= 100       ) { n += 2; i /= 100; } if ( i >= 10        ) { n += 1; } 
like image 62
Mike Dunlavey Avatar answered Sep 18 '22 17:09

Mike Dunlavey