Swift中类型转换

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

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。这种情况可能是字符串中出现了数字以外的字符,比如字母等等。
欢迎大家指出不足。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容