ios - objective-c 用 tan 返回不同的答案

标签 ios objective-c trigonometry

我有一个等式:

double center = self.Altitude * tan(Pitch);

海拔 = 130

Pitch = 90 度,对于这个等式,我将其转换为 1.570796 弧度

使用计算器我得到了答案:397802904

程序得到:-362461013356.731689

有什么想法吗?

谢谢!

最佳答案

90度的切线没有定义。如果您将其视为与圆相交的线的梯度,那是有道理的。在 90 度时,线是垂直的,因此具有未定义的梯度。

您可能应该从您的 tan() 调用中得到 NaN,除非在您的转换中它没有转到恰好 PI/2 弧度。您最好使用为此目的提供的常量:

double rads = (double)degs * M_PI / 180.0; // in C, not sure about ObjC.

以尽量减少错误的可能性。

更有可能的是,因为您处理的是非常大的数字,所以您的计算器和计算机之间精度的任何微小差异都会对答案产生成比例的影响。

1 度和 2 度之间的梯度差异相当小 (0.017 -> 0.035),因为线条都非常接近水平。 88 度和 89 度之间的差异很多 (29 -> 57)。 89 和 89.999 之间的差异确实很大(57 到 57,000)。

关于ios - objective-c 用 tan 返回不同的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18008222/

相关文章:

objective-c - Nib 创建的 View 保留文件的所有者可防止 UIViewController 的重新分配

objective-c - NSSortStable 的文档不符合语法——它想表达什么?

java - 四元数转角

ios - CSS 固定位置 Div 在 iOS 上随页面滚动然后返回到正确位置

iOS - 在背景 ImageView 之上自定义绘图

objective-c - "Private methods"或 Objective-C 中的静态函数。我应该使用哪一个?

c# - 创建正弦音频信号时出现奇怪的故障

math - 计算椭圆上的一个点

ios - 在 Braintree Dropin UI 上显示价格

ios - UILabel 和 UITextView 换行符不匹配