如何判断一个正整数是几位数

1.用数学方法

int n = 74523434;
int digits = (int)Math.Floor(Math.Log10(n) + 1);
Trace.WriteLine(digits);

原因:

对于10进制的数来说,一个n位数的最小值是10的(n-1)次方,最大值是10的n次方减1。例如,一个3位数的最小值是100(即10的2次方),最大值是999(即10的3次方减1)。所以,如果我们有一个数x,我们可以通过计算10的对数来得到这个数的位数。如果x是一个n位数,那么10的对数的值应该在(n-1)到n之间。因此,我们可以通过取对数的地板值并加1来得到x的位数。

2.取余+除法运算

int n = 12345;
int digits = 0;
while (n != 0)
{
    n /= 10;
    digits++;
}
Console.WriteLine(digits);

3.转字符串

int n = 2321221;
int digits=n.ToString().Length;

总结:用数学取对数的方法性能最好,其次是转字符串,虽然中间涉及了封箱操作,最后是循环除法。

你可能感兴趣的:(算法)