Ker*_* SB 23
n任何基数中的整数位数通过划分直到完成为止:
unsigned int number_of_digits = 0;
do {
++number_of_digits;
n /= base;
} while (n);
Run Code Online (Sandbox Code Playgroud)
Rio*_*iot 12
不一定是最有效的,但使用C++的最短和最可读的之一:
std::to_string(num).length()
Run Code Online (Sandbox Code Playgroud)
Pau*_*l R 11
如果你可以使用C库,那么一种方法是使用sprintf,例如
#include <cstdio>
char s[32];
int len = sprintf(s, "%d", i);
Run Code Online (Sandbox Code Playgroud)
"我是指整数中的位数,即"123"的长度为3"
int i = 123;
// the "length" of 0 is 1:
int len = 1;
// and for numbers greater than 0:
if (i > 0) {
// we count how many times it can be divided by 10:
// (how many times we can cut off the last digit until we end up with 0)
for (len = 0; i > 0; len++) {
i = i / 10;
}
}
// and that's our "length":
std::cout << len;
Run Code Online (Sandbox Code Playgroud)
输出 3
小智 5
有一个更好的方法
#include<cmath>
...
int size = log10(num) + 1
....
Run Code Online (Sandbox Code Playgroud)
适用于int和十进制