Java中的数学函数不';我不能提供确切的答案

Java中的数学函数不';我不能提供确切的答案,java,math,Java,Math,我有以下代码: rotation[0][0] = Math.cos(Math.toDegrees(angle)); 我试着把一个角度从弧度转换成度,然后找到这个值的余弦 然而,在toDegrees函数描述符中,它表示度转换不精确 Cos90(deg)应该等于0,但我上面的代码片段给出了-0.29951 我该如何得到“准确”的答案?(即获取Cos90=0)。根据的JavaDoc,输入需要以弧度为单位,但是,您提供的是弧度 屈服 6.123233995736766E-17 对于Math.cos,

我有以下代码:

rotation[0][0] = Math.cos(Math.toDegrees(angle));
我试着把一个角度从弧度转换成度,然后找到这个值的余弦

然而,在
toDegrees
函数描述符中,它表示度转换不精确

Cos90(deg)
应该等于0,但我上面的代码片段给出了
-0.29951


我该如何得到“准确”的答案?(即获取
Cos90=0
)。

根据的JavaDoc,输入需要以弧度为单位,但是,您提供的是弧度

屈服

6.123233995736766E-17

对于
Math.cos
,应使用弧度:

rotation[0][0] = Math.cos(angle); // if angle is in radians

cos()将弧度作为输入,而不是度。您可以省略toDegrees()调用:


cos()对角度而不是度不起作用吗?@Thomas的意思是弧度而不是度。我意识到我的输入实际上是度(90)。所以我使用了toRadians方法,我仍然得到了和以前一样的答案?你重新编译了,它仍然给你相同的结果?是的(该死,格式坏了。对不起!)
rotation[0][0]=Math.cos(Math.toRadians(angle))
System.out.println(“cos”+角度+:“+旋转[0][0])输出:
cos90.0:-0.299515394753556
Try
System.out.println(“cos”(“+Math.toRadians(angle)+”):“+Math.cos(Math.toRadians(angle))让它工作:)原因是不相关的类路径问题,使得它无法在您的评论后编译哈哈。感谢你的帮助,伙计。我意识到我的输入实际上是学位(90等)。所以函数需要以π的形式输入值?cos()函数输入弧度(π),toRadians()输入度(°),toDegrees()输入弧度(π)。非感官的
在余弦值中变为
的原因是什么?@LutzL:可能是因为
pi/2
的结果的性质,以及浮点数在二进制表示时往往有点混乱。另一个没有阅读文档并且没有意识到每个语言使用弧度来实现三角函数:fortran、c、c++、C++、java、javascript、python等。(即使在这个论点中,toDegrees也是错误的。)论点是角度,结果是-1和1之间的无量纲比率。三角函数的结果中没有弧度或度数。@LutzL:现在我明白你的意思了,你是对的,我想你指的是结果。现在应该修好了。
rotation[0][0] = Math.cos(angle); // if angle is in radians
rotation[0][0] = Math.cos(Math.toRadians(angle)); // if angle is in degrees
@Test
public void test() {
    // 90° as radians
    double angle = Math.PI /2;

    // cos() takes an radian as parameter
    System.out.println(Math.cos(angle));

    // Converting radian to degrees gives wrong result
    System.out.println(Math.cos(Math.toDegrees(angle)));

    // Or the other way round if you have 90 as input
    System.out.println(Math.cos(Math.toRadians(90)));
}