| 
 | 
 
目前在研究一个数学问题,涉及到一个循环可能要执行上万亿次,所以要优化速度。循环中有个语句是求一个正整数的位数,正常来说将数字转成字符串求长度就可以了,但是在循环次数如此多的情况下,转成字符串再求的效率就非常低了。目前我使用的是如下方法(java): 
    static int len(long num) { 
        if (num < 10) return 1; 
        if (num < 100) return 2; 
        if (num < 1000) return 3; 
        if (num < 10000) return 4; 
        if (num < 100000) return 5; 
        if (num < 1000000) return 6; 
        if (num < 10000000) return 7; 
        if (num < 100000000) return 8; 
        if (num < 1000000000) return 9; 
        if (num < 10000000000L) return 10; 
        if (num < 100000000000L) return 11; 
        if (num < 1000000000000L) return 12; 
        if (num < 10000000000000L) return 13; 
        if (num < 100000000000000L) return 14; 
        if (num < 1000000000000000L) return 15; 
        if (num < 10000000000000000L) return 16; 
        if (num < 100000000000000000L) return 17; 
        if (num < 1000000000000000000L) return 18; 
        return 0; 
    }只是不知道还有没有更快的方式?另外,不知道比较大小的语句与其他语句(比如加减运算)的开销是否相同?毕竟上面的代码可能要执行的判断语句不少。 |   
 
 
 
 |