Math.cos() gives wrong result

2019-01-11 21:48发布

According to Wolfram Mathematica: cos(50) = 0.6427876096865394;

But this code in Java:

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

gives 0.9649660284921133.

What is wrong with java.lang.Math?

标签: java math cos
5条回答
聊天终结者
2楼-- · 2019-01-11 22:03

Math.cos() expects the parameter to be in radians. This will return the result you need:

Math.cos(Math.toRadians(50));
查看更多
戒情不戒烟
3楼-- · 2019-01-11 22:05

Most Java trigonometric functions expects parameters to be in radians. You can use Math.toRadians() to convert:

System.out.println(Math.cos(Math.toRadians(50)));
查看更多
一纸荒年 Trace。
4楼-- · 2019-01-11 22:09

Math.cos() uses radians, so to get your expected result you need to do

System.out.println(Math.cos(Math.toRadians(50)));
查看更多
趁早两清
5楼-- · 2019-01-11 22:10

Degrees <> radians...........

查看更多
Anthone
6楼-- · 2019-01-11 22:15

For me...

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))));

returns

0.9649660284921133
0.9649660284921133
0.6427876096865394
0.6427876096865394



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

cos(50deg) give same result as cos(50)... so Wolfram is degree by default.

查看更多
登录 后发表回答