Finding the number of digits of an integer

前端 未结 17 2037
难免孤独
难免孤独 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 16:52

    Here is the measurement in Swift 4.

    Algorithms code:

    extension Int {
        var numberOfDigits0: Int {
            var currentNumber = self
            var n = 1
            if (currentNumber >= 100000000) {
                n += 8
                currentNumber /= 100000000
            }
            if (currentNumber >= 10000) {
                n += 4
                currentNumber /= 10000
            }
            if (currentNumber >= 100) {
                n += 2
                currentNumber /= 100
            }
            if (currentNumber >= 10) {
                n += 1
            }
            return n
        }
    
        var numberOfDigits1: Int {
            return String(self).count
        }
    
        var numberOfDigits2: Int {
            var n = 1
            var currentNumber = self
            while currentNumber > 9 {
                n += 1
                currentNumber /= 10
            }
            return n
        }
    
    }
    

    Measurement code:

    var timeInterval0 = Date()
    for i in 0...10000 {
        i.numberOfDigits0
    }
    print("timeInterval0: \(Date().timeIntervalSince(timeInterval0))")
    
    var timeInterval1 = Date()
    for i in 0...10000 {
        i.numberOfDigits1
    }
    print("timeInterval1: \(Date().timeIntervalSince(timeInterval1))")
    
    var timeInterval2 = Date()
    for i in 0...10000 {
        i.numberOfDigits2
    }
    print("timeInterval2: \(Date().timeIntervalSince(timeInterval2))")
    

    Output

    timeInterval0: 1.92149806022644

    timeInterval1: 0.557608008384705

    timeInterval2: 2.83262193202972

    On this measurement basis String conversion is the best option for the Swift language.

提交回复
热议问题