获取数字的位数
我有一个这样的数字: 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