2016-08-23 114 views
0

意外Math.cos行爲的90度的餘弦值是0困惑過在Javascript

我理解JavaScript的Math.cos採用弧度,所以我嘗試:

Math.cos(90 * Math.PI/180) 

爲什麼這個產量6.123233995736766e-17代替爲0?

回答

1

6.123233995736766e-17本質上是0。這是0.00000000000000006123233995736766。使用IEEE浮點數時,這種小錯誤是完全正常的。

解決方法是不要完全比較數字,但要比較它們是否在您期望的範圍內。例如。

var result = Math.cos(90 * Math.PI/180); 
if (Math.abs(result - 0) < 1e-16) { 
    // Test passed, result is effectively 0 
} 

- 0什麼也不做,但更普遍的是- x你怎麼會比較x。您正在嘗試與0進行比較,因此我使用了- 0,但您可以將其關閉並獲得相同的結果。