ios - 如何将度数转换为弧度?

标签 ios objective-c macos swift macros

我正在尝试将此 Obj-C 代码转换为 Swift 代码,但我不知道该代码的等效项应该是什么?

#define DEGREES_TO_RADIANS(degrees)((M_PI * degrees)/180)

我搜索了一下,发现 this

但我不明白在我的情况下如何在 Swift 中转换它?

最佳答案

Xcode 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 }
}

Playground

45.degreesToRadians         // 0.7853981633974483

Int(45).degreesToRadians    // 0.7853981633974483
Int8(45).degreesToRadians   // 0.7853981633974483
Int16(45).degreesToRadians  // 0.7853981633974483
Int32(45).degreesToRadians  // 0.7853981633974483
Int64(45).degreesToRadians  // 0.7853981633974483

UInt(45).degreesToRadians   // 0.7853981633974483
UInt8(45).degreesToRadians  // 0.7853981633974483
UInt16(45).degreesToRadians // 0.7853981633974483
UInt32(45).degreesToRadians // 0.7853981633974483
UInt64(45).degreesToRadians // 0.7853981633974483

Double(45).degreesToRadians    // 0.7853981633974483
CGFloat(45).degreesToRadians   // 0.7853981633974483
Float(45).degreesToRadians     // 0.7853981
Float80(45).degreesToRadians   // 0.78539816339744830963

如果你想让二进制整数返回浮点类型而不是总是返回 CGFloat,你可以创建一个泛型方法而不是计算属性:

extension BinaryInteger {
    func degreesToRadians<F: FloatingPoint>() -> F {  F(self) * .pi / 180 }
}

let radiansDouble: Double = 45.degreesToRadians()   // 0.7853981633974483
let radiansCGFloat: CGFloat = 45.degreesToRadians() // 0.7853981633974483
let radiansFloat: Float = 45.degreesToRadians()     // 0.7853981
let radiansFloat80: Float80 = 45.degreesToRadians() // 0.78539816339744830963

关于ios - 如何将度数转换为弧度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29179692/

相关文章:

iphone - 在 iOS sdk 中使用 ZipArchive 解压缩文件

ios - AppDelegate 可以重定向吗?我收到错误委托(delegate)而不是方法

ios - 无法插入 NSMutableDictionary

macos - 如何从本地 Kubernetes 连接到本地机器上的数据库

bash - 找不到subprocess.Popen返回命令

ios - 如何让 UILabel 显示多行和自动换行?

ios - UICollectionViewCell,多个单元格大小,设置 gradientView 宽度未设置为当前单元格大小,滚动时有时会发生变化

ios - 基于另一个属性值的属性默认值

objective-c - 在 UITableView 中插入新行的技术

php - 使用 PHP 检测 Mac OS 版本