【问题标题】:How to get mathemical PI constant in Swift如何在 Swift 中获得数学 PI 常数
【发布时间】:2014-10-12 10:16:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: swift math darwin


    【解决方案1】:

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

    Double.pi
    Float.pi
    CGFloat.pi
    

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

    对于旧版本的 Swift

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

    import Darwin // or Foundation or UIKit
    
    let pi = M_PI
    

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

    let π = M_PI
    

    alt + p 是创建π unicode 字符的快捷方式(在美式键盘上)。

    【讨论】:

    • 由于 Swift 支持 Unicode,你也可以这样做var π = M_PI
    • 由于 pi 是一个常数,将其声明为 var 似乎是不恰当的。确定let pi = M_PI
    • 你不需要任何特别的东西 - Alt-p 默认是 pi。
    • 美式键盘上的 Alt-P,我猜?绝对不在我的(它调用打印窗口的地方)。请,请不要在代码中编写随机的 unicode 字符。我不希望我的同事每次在代码中找到 π 时都去谷歌搜索如何编写 π。
    • 请注意:如果可以推断出 Pi 的类型,您也可以使用 .pi 代替长格式。例如。 let x = CGFloat(42) * .pi
    【解决方案2】:

    import Darwin 不需要所有 M_x 都可以通过 import Foundation 看到

    (Xcode 版本 6.4 (6E35b))

    【讨论】:

      【解决方案3】:

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

      令人惊讶的是,.pi 也可以正常工作。 从 Swift 4.2.1、Xcode 10.1 开始,M_PI 已被弃用,这是我正在使用的当前版本。所以,使用 .pi 或 Double.pi

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 2015-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多