這個類型的轉換是給相應類加了分類,直接用點語法就可以調用。
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。這種情況可能是字符串中出現了數字以外的字符,比如字母等等。
歡迎大家指出不足。