M_PI和M_PI_2之间有什么区别?

Bri*_*ure 2 swift

我从Github分叉了一个项目,Xcode显示了很多警告:

'M_PI'已弃用:请使用'Double.pi'或'.pi'获取正确类型的值并避免投射.

'M_PI_2'已弃用:请使用'Double.pi'或'.pi'获取正确类型的值并避免投射.

由于两个M_PIM_PI_2提示被替换Double.pi,我认为有实际上相同的值.但是,项目中有这个代码:

switch angle {

    case M_PI_2:
        ...

    case M_PI:
        ...

    case Double.pi * 3:
        ...

    default:
        ...

}
Run Code Online (Sandbox Code Playgroud)

我真的很困惑,是M_PIM_PI_2不同的?还是他们一样?

更新:

事实证明这是我的错误,Xcode说'M_PI_2'已被弃用:请使用Double.pi / 2.pi / 2获取正确类型的值并避免投射.所以它不是一个bug,只是太难注意到2个提示的区别.

har*_*hav 14

使用Double.pi / 2了M_PI_2和Double.pi为M_PI.

你也可以使用Float.piCGFloat.pi.

在Swift 3和4中,pi被定义为浮点数类型的静态变量Double,FloatCGFloat.