如何在Swift中获取数学π常数

163

我正在尝试找到一种方法在我的Swift代码中包含PI常量。我已经在另一个答案中找到了帮助,可以导入Darwin,我知道这会让我可以访问C函数

我还检查了Darwin中的Math包,并找到了以下声明:

var M_PI: Double { get } /* pi */

因此,我假设有一种在代码中使用PI的方法,只是我不知道具体如何...

3个回答

308

使用 Swift 3 & 4,pi 现在被定义为浮点数类型 DoubleFloatCGFloat 上的静态变量,因此不再需要特定的导入:

Double.pi
Float.pi
CGFloat.pi

还要注意的是,.pi 的实际类型可以被编译器推断出来。因此,在情境明确表明你正在使用例如 CGFloat 的情况下,只需要使用 .pi 即可(感谢 @Qbyte 和 @rickster 在评论中指出这一点)。

对于旧版本的 Swift

M_PI 最初定义在 Darwin 中,但也包含在 FoundationUIKit 中,因此导入其中任何一个都会给你正确的访问权限。

import Darwin // or Foundation or UIKit

let pi = M_PI

注意: 如评论中所述,pi也可以作为Swift中的Unicode字符使用,因此您也可以这样做。

let π = M_PI

alt + p 是在美式键盘上创建 π Unicode 字符的快捷键。


5
由于 Swift 支持 Unicode,您也可以使用 var π = M_PI - Cyrille
23
由于π是一个恒定不变的数值,将其声明为“var”似乎有些不当。使用“let pi = M_PI”更为合适。 - Grimxn
2
你不需要任何特殊的东西 - Alt-p 默认是 pi。 - Grimxn
3
美国键盘上是按 Alt-P 吗?在我的键盘上肯定不是(那会打印窗口)。请不要在代码中写入随机的 Unicode 字符。我不希望我的同事每次在代码中找到 π 就去 Google 如何输入它。 - Sulthan
2
注意:如果可以推断出Pi的类型,您也可以使用.pi而不是长形式。例如:let x = CGFloat(42) * .pi - Qbyte
显示剩余9条评论

15

import Darwin 不必要,使用 import Foundation 即可查看所有 M_x。

(Xcode 版本 6.4 (6E35b))


4

警告: 'M_PI'已过时: 请使用'Double.pi'或'.pi'获取正确类型的值并避免强制转换。

令人惊讶的是,.pi也可以正常工作。 自Swift 4.2.1、Xcode 10.1起,M_PI已过时,这是我正在使用的当前版本。因此,请使用.pi或Double.pi。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接