获取数字的位数

我有一个这样的数字: int num = 36729; 我想得到组成数字的位数(在这种情况下是5位数)。

我怎样才能做到这一点?

使用此公式:

 if(num) return floor(log10(abs((double) num)) + 1); return 1; 
 int digits = 0; while (num > 0) { ++digits; num = num / 10; } 

提示:使用/%运算符。

 int unsigned_digit_count(unsigned val) { int count = 0; do { count++; val /= 10; } while (val); return count; } int digit_count(int val) { if (val < 0) { return 1+unsigned_digit_count(-val); // extra digit for the '-' } else { return unsigned_digit_count(val); } } 
 int findcount(int num) { int count = 0; if(num != 0){ while(num) { num /= 10; count ++; } return count ; } else return 1; } 

对于0以外的任何输入,计算输入绝对值的以10为底的对数,取该结果的最低值并加1:

 int dig; ... if (input == 0) dig = 1; else dig = (int) floor(log10(abs((double) input))) + 1; 

0是特殊情况,必须单独处理。

效率不高,但奇怪的优雅……

 #include  #include  int main(void) { // code to get value char str[50]; sprintf(str, "%d", value); printf("The %d has %d digits.\n", value, strlen(str)); return 0; } 

你不能这样做吗?

  int num = 36729; num.ToString().Length