最好的写法是什么?
int NumDigits(int n);在C++语言中,它返回输入的十进制表示中的位数。例如11->2,999->3,-1->2等。
发布于 2009-11-08 20:01:45
简单明了,独立于sizeof(int)
int NumDigits(int n) {
int digits = 0;
if (n <= 0) {
n = -n;
++digits;
}
while (n) {
n /= 10;
++digits;
}
return digits;
}发布于 2009-11-08 19:30:04
//Works for positive integers only
int DecimalLength(int n) {
return floor(log10f(n) + 1);
}发布于 2009-11-08 19:33:17
最快的方法可能是二进制搜索。
//assuming n is positive
if (n < 10000)
if (n < 100)
if (n < 10)
return 1;
else
return 2;
else
if (n < 1000)
return 3;
else
return 4;
else
//etc up to 1000000000在这种情况下,不管输入是什么,它大约是3次比较,我怀疑这比除法循环或使用doubles快得多。
https://stackoverflow.com/questions/1696086
复制相似问题