2012-10-19 74 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