2012-10-19 33 views
37

Theo Wolfram Mathematica: cos (50) = 0.6427876096865394;Math.cos() cho kết quả sai

Nhưng mã này trong Java:

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

cho ,9649660284921133.

Điều gì là sai với java.lang.Math?

Trả lời

89

Math.cos() hy vọng tham số ở dạng radian. Điều này sẽ trả về kết quả bạn cần:

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

+1. Chỉ để tham khảo, như OP đã nói về wolfram http://www.wolframalpha.com/input/?i=cos%2850rad%29 –

+0

Có một phiên bản Math.cos() trong Java hoạt động với Độ, hay không chúng ta liên tục cần nhớ để tự chuyển đổi độ thành radian? –

3

Degrees <> radian ...........

+0

Câu trả lời này có ý nghĩa gì? Bằng cấp tương đương với radian ... nhưng '1 độ = 0.0174532925 radians' – Manu

+2

@Manu Phần' nhưng' trong nhận xét của bạn là tại sao chúng không tương đương;) Nó giống như nói kilos và đá là tương đương. Họ đo lường cùng một số lượng, chắc chắn, nhưng theo những cách khác nhau. – phant0m

13

Math.cos() sử dụng radian, vì vậy để có được bạn mong đợi kết quả bạn cần làm

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

Hầu hết các hàm lượng giác Java mong đợi các tham số ở dạng radian. Bạn có thể sử dụng Math.toRadians() để chuyển đổi:

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

Đối với tôi ...

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

lợi nhuận

0,9649660284921133
0,9649660284921133
0,6427876096865394
0,6427876096865394



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

cos(50deg) cho kết quả tương tự như cos(50) ... do đó, Wolfram là mức độ theo mặc định.

+0

Wolfram Alpha không sử dụng độ theo mặc định! Thay vào đó, nó đang cố gắng để được thông minh. – phant0m

+0

Wolfram Alpha mặc định, độ hoặc radian hoặc ... là gì? Có cơ sở nào khác không? Bạn có thể đưa ra nhiều tranh luận hơn về những gì bạn viết không? Nhận xét của bạn không đưa ra bất kỳ thông tin nào trong thực tế! Câu trả lời của tôi không trả lời câu hỏi đầu tiên, vì vậy ok cho cờ "-1" nhưng nó cung cấp thêm thông tin hữu ích về cuộc trò chuyện này, tôi nghĩ vậy. – Manu

+0

Wolfram Alpha cố gắng đoán xem đầu vào của bạn là radian hay độ: Nếu giá trị nhỏ hơn 5, có vẻ như giải thích nó là radian, nếu nó lớn hơn hoặc bằng 5, nó diễn giải nó dưới dạng độ); để sửa đầu ra mà Java thực sự tạo ra khi thực thi mã đó. – phant0m

Các vấn đề liên quan