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

问题描述 投票:146回答:3

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

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

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

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

swift math darwin
3个回答
268
投票

使用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角色的快捷键(在US-keyboards上)。


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

© www.soinside.com 2019 - 2024. All rights reserved.