如何快速确定int中有多少位数?

时间:2013-10-09 22:26:17

标签: c++ c algorithm

我知道我能做到:

n = floor(log10(i)) + 1;

或者我可以快速循环:

while(i) {
  n++;
  i/=10;
}

有没有比复杂的数学运算或循环更好的方法来实现目标?例如:如果i = 1234,那么n = 4。

2 个答案:

答案 0 :(得分:1)

我所知道的最短路径(不是计算方面,只是在输入方面)是致电snprintf(3)

int n = snprintf(NULL, 0, "%d", i);

答案 1 :(得分:0)

将其转换为字符串(itoa)并计算字符数? (虽然可能不是最好的表现)