Checking if a double value is an integer - Swift

后端 未结 12 2046
梦如初夏
梦如初夏 2020-12-14 14:18

I need to check if a double-defined variable is convertible to Int without losing its value. This doesn\'t work because they are of different types:

if self.         


        
12条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-14 14:48

    Using @ColinE answer, I build an extension that handles when the Double cannot be converted to Int and another function that returns the Int:

    extension Double {
    
        func isInt() -> Bool {
            guard Double(Int.min) <= self && self <= Double(Int.max) else {
                return false
            }
    
            return floor(self) == self
        }
    
        func toInt() -> Int? {
            guard Double(Int.min) <= self && self <= Double(Int.max) else {
                return nil
            }
    
            return Int(self)
        }
    }
    

    I hope this helps someone,

    Xavi

提交回复
热议问题