Finding the number of digits of an integer

前端 未结 17 2054
难免孤独
难免孤独 2020-12-07 16:32

What is the best method to find the number of digits of a positive integer?

I have found this 3 basic methods:

  • conversion to string

             
    
    
            
17条回答
  •  自闭症患者
    2020-12-07 17:14

    I was curious after seeing @daniel.sedlacek results so I did some testing using Swift for numbers having more than 10 digits. I ran the following script in the playground.

    let base = [Double(100090000000), Double(100050000), Double(100050000), Double(100000200)]
    var rar = [Double]()
    for i in 1...10 {
        for d in base {
            let v = d*Double(arc4random_uniform(UInt32(1000000000)))
            rar.append(v*Double(arc4random_uniform(UInt32(1000000000))))
            rar.append(Double(1)*pow(1,Double(i)))
        }
    }
    
    print(rar)
    
    var timeInterval = NSDate().timeIntervalSince1970
    
    for d in rar {
        floor(log10(d))
    }
    
    var newTimeInterval = NSDate().timeIntervalSince1970
    
    print(newTimeInterval-timeInterval)
    
    
    timeInterval = NSDate().timeIntervalSince1970
    for d in rar {
        var c = d
        while c > 10 {
            c = c/10
        }
    }
    
    newTimeInterval = NSDate().timeIntervalSince1970
    
    print(newTimeInterval-timeInterval)
    

    Results of 80 elements

    0.105069875717163 for floor(log10(x))
    0.867973804473877 for div 10 iterations

提交回复
热议问题