Math.atan()返回输入

时间:2011-03-02 02:02:06

标签: java math trigonometry

我遇到问题,Math.atan返回与输入相同的值。

public double inchToMOA( double in, double range){
        double rangeIn = 36*range;
        double atan = (in / rangeIn) * -1.0;
        double deg = Math.atan(atan);
        double moa = deg * 60;
        return moa;
    }

我把这一切都放在了一行,但我把它分解成不同的变量,看看我是否能找出它为什么不起作用。如果在= -10且范围= 300,则atan约为-.00094。角度应约为-.053度,但math.atan返回-.00094,与输入相同。

我的号码对于math.atan来说太小了吗?

3 个答案:

答案 0 :(得分:3)

此处描述了反正切:

http://mathworld.wolfram.com/InverseTangent.html

我不认为你的论点是问题所在。

当然,你意识到计算机触发功能是以弧度而不是度数来处理的,对吗?

答案 1 :(得分:1)

可能只是。如果你看一下数学中切线函数的严格定义,你会看到tan(x) = sin(x)/cos(x)对于“x”的小值

lim x->0, sin(x) = x
lim x->0, cos(x) = 1

因此,您可以看到lim x->0, tan(x) -> x意味着它是反向的,arctan,返回它给出的值。至于Math.atan的数值精度,我认为作者已经竭尽全力确保它的数值精度。

答案 2 :(得分:1)

Math.atan没有错。对于接近零的输入,其值近似为1:1线性,与原点相交。因此越接近零,输入的变化就会越小。