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


153

我试图找到一种在我的Swift代码中包含PI常量的方法。我已经在另一个答案中找到了帮助import Darwin,据我所知,我可以访问C函数

我还签入了Math包裹,Darwin并遇到了以下声明:

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

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

Answers:


282

Swift 3和4中,pi现在被定义为浮点数类型DoubleFloat和的静态变量CGFloat,因此不再需要特定的导入:

Double.pi
Float.pi
CGFloat.pi

另请注意,.pi编译器可以推断的实际类型。因此,在从上下文中清楚地看到正在使用的情况下CGFloat,您可以使用.pi(感谢@Qbyte和@rickster在注释中指出这一点)。

对于旧版的Swift

M_PI最初Darwin是在中定义的,但也包含在Foundation和中UIKit,因此导入任何这些都将为您提供正确的访问权限。

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 2014年

23
由于pi是一个常数,因此将其声明为a似乎是错误的var。当然可以let pi = M_PI
Grimxn14年

2
您不需要任何特殊的东西-默认情况下Alt-p是pi。
Grimxn 2014年

3
我认为是美国键盘上的Alt-P吗?绝对不在我的(它调用打印窗口的地方)上。请,请不要在代码中写随机的unicode字符。我不希望我的同事在每次在代码中找到π时都使用谷歌搜索方法。
苏珊(Sulthan)2014年

2
请注意:如果可以推断Pi的类型,则也可以使用它.pi代替长格式。例如let x = CGFloat(42) * .pi
Qbyte

15

import Darwin 不需要所有M_x在 import Foundation

(Xcode版本6.4(6E35b))


1

警告:不推荐使用“ M_PI”:请使用“ Double.pi”或“ .pi”获取正确类型的值,并避免进行强制转换。

令人惊讶的是,.pi也可以正常工作。从Swift 4.2.1,Xcode 10.1开始不推荐使用M_PI,这是我正在使用的当前版本。因此,请使用.pi或Double.pi

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.