Mathf.Tan给出了奇怪的结果

时间:2014-04-14 13:12:46

标签: c# unity3d

我在Unity3d游戏中找到棕褐色角度有一个问题。

代码如下

b = Mathf.Deg2Rad * (90.0f - angle);
float tan = Mathf.Tan (b);
Debug.Log ("Value of b :  " + b + "  Tan of b  :  " + tan);

此处角度值为0.

我的问题是,当我使用计算器计算时,我会得到b的结果为1.570796327 这是正确的,并且当我的计算器进入时, tan的值为0.027422438 度模式和**无限**以弧度模式

调试日志结果如下

b的值:1.570796 Tan的b:-2.287733E + 07

有什么问题?如果我错了,请原谅。

1 个答案:

答案 0 :(得分:2)

由于浮点数不准确,切线计算的角度略大于π/2 rad(90度),导致您的回答很大。

如果您想更好地考虑这种情况,您应该检查b是否足够接近pi/2:如果是,则切线未定义。 E.g。

// if necessary, also account for 3pi/2 (270 deg)
if (Math.Abs(b - Math.PI / 2) < 0.00001)
    // undefined or infinite
else
    // finite, calculate tangent like normal