0

在下面的代码中,

float i = Float.parseFloat(a);
float j = Float.parseFloat(b);
double div = (double)j/i;  
float theta = (float) Math.atan(Math.toRadians(div));

theta得到错误的值。据我所知,它总是在计算Math.tan(我也试过这个,它给了我相同的结果)。因此,即使我写Math.tanor Math.atan,我也会得到相同的结果。

谁能帮我?

具体例子:

i,j----> theta I get:

3,4-----> 0.023 while the correct one is arctan(4/3)=53.13 not tan(4/3)=0.023
3,6-----> 0.052 while the correct one is arctan(9/3)=71.56 not tan(9/3)=0.052
4

1 回答 1

11

看起来你到处都在奇怪地转换。这就是我认为你想要的:

public class Test {
    public static void main(String[] args) throws Exception {
        double div = (double)4/3;  
        float theta = (float) Math.toDegrees(Math.atan(div));
        System.out.println(theta); // 53.130104
    }
}

假设你想要 4/3 作为渐变,那根本不是一个角度——所以调用Math.toRadians它是不合适的。您想调用Math.atan渐变以获取弧度值,然后调用Math.toDegrees弧度值以获取度数。

于 2012-06-26T22:30:23.590 回答