2012-12-23 71 views
1

我已經看到了一些這樣的答案,但我仍然沒有找到一個適合我的方法。當我試試這個:Math.cos對大數值給出了不好的結果

return Math.cos(270.* Math.PI/180); 

我得到

-1.8369701987210297E-16 

同時: -

Math.cos(Math.toRadians(270.) // gives:-1.8369701987210297E-16 

我期待這給0

+0

這是因爲浮點參數。 – maverik

回答

5

數量-1.8369701987210297E-16是的scientific representation一個數字是極其接近z ERO。它相當於這個數字:

-0.000000000000000018369701987210297 

浮點運算不精確。您應該期望很小的表示錯誤。特別是不可能像pi一樣將irrational number完全表示爲浮點數。

0

另一個浮點數不精確的例子。您將其轉換並導致一個不完美的0值。然而,它接近於零。

它與大的價值無關。在浮點數的情況下,總是期望有微小的差異。

1

Math.PI是一個近似值,所以您將得到一個近似值zero

嘗試使用誤差範圍epsilon,其值近似爲1E-16。 因此,如果cos結果低於epsilon,則意味着它爲空。

您也可以開發自己的修改cos函數。

相關問題