相关疑难解决方法(0)

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

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

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

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

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

math darwin swift

149
推荐指数
2
解决办法
7万
查看次数

如何计算两个地理/ GPS坐标之间的角度?

我有两个GPS坐标

例如(Lat1,Long1)和(Lat2,Long2)

有人可以帮我找到这两点之间的角度.

值应为0-360度.

gps angle latitude-longitude coordinates

7
推荐指数
2
解决办法
2万
查看次数

-Wbad-function-cast的目的是什么,为什么它只适用于直接返回值?

还有的警告的理由在这里,但没有回答的全貌.例如,以下代码触发警告:

(int)round(M_PI);
Run Code Online (Sandbox Code Playgroud)

但另一方面,以下代码不会:

double d;
(int)(d = round(M_PI));
Run Code Online (Sandbox Code Playgroud)

这不是:

(int)M_PI;
Run Code Online (Sandbox Code Playgroud)

的理由是,你不应该转换简单地铸造为int,但你应该使用round,floor或类似的功能.但是,使用round仍然会触发警告,但如上所示,类型化常量或指定的变量则不会.

所以,如果它是坏的,从投doubleint,那么当你写为什么不报警触发(int)d(int)M_PI?如果你想转换返回值,应该以什么方式规避警告?是否有警告可以更正确/合理的方式处理这些危险的转换?

c gcc-warning

6
推荐指数
1
解决办法
2172
查看次数

M_PI和M_PI_2之间有什么区别?

我从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个提示的区别.

swift

2
推荐指数
1
解决办法
9176
查看次数

标签 统计

swift ×2

angle ×1

c ×1

coordinates ×1

darwin ×1

gcc-warning ×1

gps ×1

latitude-longitude ×1

math ×1