Xpre 11•Swift 5.1或更高版本
extension BinaryInteger { var degreesToRadians: CGFloat { CGFloat(self) * .pi / 180 }}extension FloatingPoint { var degreesToRadians: Self { self * .pi / 180 } var radiansToDegrees: Self { self * 180 / .pi }}操场
45.degreesToRadians // 0.7853981633974483Int(45).degreesToRadians // 0.7853981633974483Int8(45).degreesToRadians // 0.7853981633974483Int16(45).degreesToRadians // 0.7853981633974483Int32(45).degreesToRadians // 0.7853981633974483Int64(45).degreesToRadians // 0.7853981633974483UInt(45).degreesToRadians // 0.7853981633974483UInt8(45).degreesToRadians // 0.7853981633974483UInt16(45).degreesToRadians // 0.7853981633974483UInt32(45).degreesToRadians // 0.7853981633974483UInt64(45).degreesToRadians // 0.7853981633974483Double(45).degreesToRadians // 0.7853981633974483CGFloat(45).degreesToRadians // 0.7853981633974483Float(45).degreesToRadians // 0.7853981Float80(45).degreesToRadians // 0.78539816339744830963
如果要使二进制整数返回浮点类型而不是始终返回CGFloat,则可以使通用方法代替计算属性:
extension BinaryInteger { func degreesToRadians<F: FloatingPoint>() -> F { F(self) * .pi / 180 }}let radiansDouble: Double = 45.degreesToRadians() // 0.7853981633974483let radiansCGFloat: CGFloat = 45.degreesToRadians() // 0.7853981633974483let radiansFloat: Float = 45.degreesToRadians() // 0.7853981let radiansFloat80: Float80 = 45.degreesToRadians() // 0.78539816339744830963



