【发布时间】:2011-10-03 02:25:53
【问题描述】:
求正整数位数的最佳方法是什么?
我找到了这3个基本方法:
-
转成字符串
String s = new Integer(t).toString(); int len = s.length(); -
for循环
for(long long int temp = number; temp >= 1;) { temp/=10; decimalPlaces++; } -
对数计算
digits = floor( log10( number ) ) + 1;
您可以在大多数语言中计算 log10(x) = ln(x) / ln(10)。
首先我认为字符串方法是最脏的方法,但我越想越觉得它是最快的方法。还是这样?
【问题讨论】:
-
首先定义“最佳”。那么选择“最佳”算法就很容易了。
-
这个问题可能属于codegolf。
-
这里似乎没有人考虑非基数为 10 的整数。不使用
Integer.toString(t, radix)、temp /= radix;(以及相应的numDigits++;,因为它是从十进制概括)或ln(x) / ln(radix)... -
@Joey Adams:好点……好吧,我对浮点 ln(e) 有信心。