- 用数学方法
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的位数。
- 取余 除法运算
int n = 12345;
int digits = 0;
while (n != 0)
{
n /= 10;
digits ;
}
Console.WriteLine(digits);
- 转字符串
int n = 2321221;
int digits=n.ToString().Length;
总结:用数学取对数的方法性能最好,其次是转字符串,虽然中间涉及了封箱操作,最后是循环除法。
————————————————
版权声明:本文为CSDN博主「游子吟i」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ftfmatlab/article/details/134284506