Swift中类型转换

作者: 厉害了我的國 | 来源:发表于2016-12-09 17:44 被阅读117次

    这个类型的转换是给相应类加了分类,直接用点语法就可以调用。

    Int转Float、Double、String:

    extension Int {
        func power(n: Double) -> Int {
            return Int(pow(Double(self), n))
        }
        var float: Float {
            return Float(self)
        }
        var double: Double {
            return Double(self)
        }
        var string: String {
            return String(self)
        }
    }
    

    Float转其他类型:

    extension Float {
        func power(n: Float) -> Float {
            return powf(self, n)
        }
        var int: Int {
            return Int(self)
        }
        var double: Double {
            return Double(self)
        }
        var string: String {
            return String(self)
        }
        var int_ceil: Int {
            return Int(ceil(self))
        }
        var int_round: Int {
            return Int(roundf(self))
        }
        var int_floor: Int {
            return Int(floor(self))
        }
    }
    

    Double转其他类型:

    extension Double {
        func power(n: Double) -> Double {
            return pow(self, n)
        }
         var int: Int {
            return Int(self)
         }
        var string: String {
            return String(self)
        }
         var int_ceil: Int {
            return Int(ceil(self))
         }
         var int_round: Int {
             return Int(roundf(Float(self)))
         }
         var int_floor: Int {
            return Int(floor(self))
         }
     }
    

    String类型的转换:

    extension String {
        var int: Int {
           let d = Double(self)
         let i = Int(d ?? 0)
         return i
        }
        var float: Float {
            let d = Double(self)
            let f = Float(d ?? 0.0)
            return f
        }
        var double: Double {
            let d = Double(self)
            return d ?? 0.0
        }
    }
    

    使用方法:

    //一个数的n次方
    print(2.power(n: 5))
    print(2.0.power(n: 2))
    
    //对一个字符串取整,取浮点型
    let s = "3223.9555555555"
    print("2".int) // 2
    print("2.4e".int) // 0.0 ,为什么返回的是0.0
    print("2.3".float) // 2.3
    print(s.int) // 3223
    print(s.float) // 3223.96
    print(s.double) // 3223.9555555555
        
    // 对浮点型取整
    let num1: Double = 3.92728934823
    let num2: Float = 3.92
    print(num1.int)
    print(num1.int_floor)
    print(num1.int_ceil)
    print(num1.int_round)
    print(num2.int_ceil)
    print(num2.int_floor)
    print(num2.int_round)
    print(23.4.int_round)
    print(s.double.int_floor)
    print(s.double.int_ceil)
    print("1.2d".float)
    

    当字符串转数字时,不成功的情况下返回的是0.0,Int时返回的0。这种情况可能是字符串中出现了数字以外的字符,比如字母等等。
    欢迎大家指出不足。

    相关文章

      网友评论

      • 60010b6bce88:感谢楼主分享,我有些小问题想请教楼主,希望楼主见到评论私聊
        厉害了我的國:@void_ 谢谢你的支持,共同学习。

      本文标题:Swift中类型转换

      本文链接:https://www.haomeiwen.com/subject/vmxymttx.html