我在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;
}我把所有这些都放在一行中,但我将其分解为不同的变量,看看是否可以找出它不起作用的原因。如果in = -10,range = 300,则atan约为-.00094。角度应该约为-.053度,但math.atan返回的是-.00094,与输入的角度相同。
我的数字对于math.atan来说太小了吗?
发布于 2011-03-02 10:05:24
逆切线如下所示:
http://mathworld.wolfram.com/InverseTangent.html
我认为你的论点不是问题所在。
当然,你知道计算机的触发函数是以弧度而不是度为单位的,对吧?
发布于 2011-03-02 10:06:11
可能就是这样。如果你看数学中对正切函数的严格定义,你会看到,对于"x“的小值,tan(x) = sin(x)/cos(x)
lim x->0, sin(x) = x
lim x->0, cos(x) = 1因此,您可以看到,lim x->0, tan(x) -> x表示它是反转的,arctan返回给它的值。至于Math.atan的数值精度,我认为作者已经花了很大的力气来确保它的数值精度。
发布于 2011-03-02 10:07:21
Math.atan没有任何问题。对于接近零的输入,它的值几乎是1:1线性的,与原点相交。因此,你越接近于零,输入的变化就越小。
https://stackoverflow.com/questions/5162636
复制相似问题