2011-06-05 74 views

回答

10

6.1E-17是差不多 [*]。如果您需要實際將結果與零進行比較,則在浮點數學中,應檢查它是否在所需值的某個容差範圍內,因爲大多數數字無法正確表示。

$x = cos(deg2rad($angle)); 
$is_zero = (abs($x) < 1e-10); 

嚴格地說,當然,實際上零是一個數字,可以正確浮點表示。真正的問題是pi/2.0不能,因此cos函數的輸入不是「正確的」。

[*]爲了把在上下文中,作爲1個AU(從太陽到地球的平均距離)的比例就相當於0.0092毫米,或約一tenth of the average width人類頭髮的..

4

6.12323399574E-17是一個非常小的浮點數(小數點後面有17個零,後面跟着6),與0幾乎沒有區別。如果你正在處理浮點數(因爲任何餘弦函數都必須),你不能避免這樣的問題。如果您需要將浮點數與零進行比較,則必須使用誤差線(即,該數值在零值附近的某個範圍內的值內)進行,而不是絕對比較,即使函數比餘弦更簡單。如果您只需要對結果進行一些數學運算(添加它,將其相乘),它將表現得幾乎完全像零,因此您不必擔心。

1

試試這個

$x = round(cos(deg2rad($angle)), 3);