我有一个等式:
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/