2012-10-19 211 views
37

根据数学钨: COS(50)=0.6427876096865394;Math.cos()给出错误的结果

但这个代码在Java中:

System.out.println(Math.cos(50)); 

0.9649660284921133

java.lang.Math有什么问题?

回答

89

Math.cos()期望参数以弧度表示。这将返回的结果,你需要:

Math.cos(Math.toRadians(50)); 
+2

+1。仅供参考,因为OP在谈论wolfram http://www.wolframalpha.com/input/?i=cos%2850rad%29 –

+0

Java中有Math.cos()与Degrees一起使用的版本吗?我们经常需要记住手动将度数转换为弧度? –

3

度<>弧度...........

+0

这个答案是什么意思?学位相当于弧度......但是'1度= 0.0174532925弧度' – Manu

+2

@Manu你的评论中的'but'部分就是为什么它们不相等;)这就像是说kil和stone是等价的。他们衡量相同数量,当然,但以不同的方式。 – phant0m

13

Math.cos()使用弧度,所以让你期望的结果,你需要做的

System.out.println(Math.cos(Math.toRadians(50))); 
3

大部分Java三角函数都需要参数为弧度。可以,请使用Math.toRadians()转换:

System.out.println(Math.cos(Math.toRadians(50))); 
-2

我...

System.out.println(Math.cos(50)); 
System.out.println(Math.cos(new Double(50))); 
System.out.println(Math.cos(Math.toRadians(50))); 
System.out.println(Math.cos(Math.toRadians(new Double(50)))); 

回报

0.9649660284921133
0.9649660284921133
0.6427876096865394
0.6427876096865394



http://www.wolframalpha.com/input/?i=cos%2850deg%29

cos(50deg)得到相同的结果。cos(50) ...所以钨是默认的程度。

+0

Wolfram Alpha默认不使用度数!相反,它试图变得聪明。 – phant0m

+0

什么是Wolfram Alpha默认,度数或弧度或...?有另一个基地吗?你能对你写的内容给出更多争论吗?您的评论实际上并未提供任何信息!我的回应没有回应最初的问题,因此对于“-1”标志可以,但它给了更多有关这次对话的信息,我想。 – Manu

+0

Wolfram Alpha会尝试猜测您的输入是弧度还是度数:如果该值低于5,则它似乎将其解释为弧度,如果它大于或等于5,则将其解释为度数;)我已采取自由以纠正执行该代码时Java实际产生的输出。 – phant0m