2012-06-23 34 views
9

Trong C# Tôi có điều này:C# Math.cos (double) trả về sai giá trị

double Cos = Math.Cos(32.471192290848492); //Equals 0.49299653250335213 

Nhưng khi tôi làm điều này trong một máy tính tôi có được điều này

(0.745476752872050588) 

Tại sao nó trả lại sai giá trị?

+1

Đây là bản sao của http://stackoverflow.com/q/1564207/1071834. Có lẽ những điều này nên được hợp nhất và câu hỏi và câu trả lời được mở rộng để bao gồm tất cả các hoạt động chính của trig để tránh các bản sao trong tương lai. – dodexahedron

+0

Có thể trùng lặp của [C# - Tại sao Math.Atan (1)! = Bất cứ điều gì gần 45] (https://stackoverflow.com/questions/1564207/c-sharp-why-is-math-atan1-anything-near- 45) –

Trả lời

5

Bạn có thể là mức độ khó hiểu với radian. Hầu hết các máy tính sử dụng Độ, trong khi hầu hết các ngôn ngữ lập trình được thiết lập để sử dụng radian.

14

Math.Cos đang mong đợi một góc bằng radian. Tôi nghi ngờ máy tính của bạn đang hoạt động ở mức độ.

Bạn sẽ có thể để có được câu trả lời tương tự bằng cách chuyển đổi các giá trị trong độ sang radian:

double angleInDegrees = 32.471192290848492; 
double cos = Math.Cos(angleInDegrees * (Math.PI/180.0)); 
+0

Điều đó dường như không hoạt động. Tôi nhận được 0,49 trong C#. Và tôi nhận được 0,84 trong cửa sổ máy tính. – Matt

+0

@Matt Hãy thử lại, đây là vấn đề (và mã của Reed hoạt động.) – dlev

+0

@Matt Điều này trả về 0,84 như mong đợi. CopyPaste mã. – SimpleVar

4

Math.Cos công trình trong radian và máy tính của bạn trong độ.

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