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

nbu*_*urk 149 math darwin swift

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

我还检查了Math包裹,Darwin并发现了以下声明:

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

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

nbu*_*urk 271

夫特3和4,PI现在定义为在浮点数类型的静态变量Double,Float并且CGFloat,因此没有特定的进口所需的任何更多:

Double.pi
Float.pi
CGFloat.pi
Run Code Online (Sandbox Code Playgroud)

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

对于旧版本的Swift:

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

import Darwin // or Foundation or UIKit

let pi = M_PI
Run Code Online (Sandbox Code Playgroud)

注意: 如评论中所述,pi也可以在Swift中用作unicode字符,所以你不妨这样做

let ? = M_PI
Run Code Online (Sandbox Code Playgroud)

alt + p是创建?unicode字符的快捷键(在美国键盘上).

  • 由于pi是常数,将它声明为`var`似乎有悖常理.当然'让pi = M_PI`? (22认同)
  • 由于Swift支持Unicode,你也可以做`varπ= M_PI` (5认同)
  • 我猜想美国键盘上的Alt-P?绝对不在我的(它调用打印窗口).请不要在代码中写随机unicode字符.我不希望我的同事每次在代码中找到它时都会使用Google搜索. (3认同)
  • 你不需要任何特别的东西 - 默认情况下,Alt-p是pi. (2认同)
  • 只需注意:如果可以推断Pi的类型,您也可以使用`.pi`而不是长形式.例如`let x = CGFloat(42)*.pi` (2认同)

小智 15

import Darwin 不需要所有M_x都可见 import Foundation

(Xcode版本6.4(6E35b))