簡體   English   中英

我怎樣才能使 php cos function 返回正確的值?

[英]How can i make the php cos function return the correct value?

我試過了

$x = cos(deg2rad($angle));

但是當角度為 90 度而不是 0 時,它返回 6.12323399574E-17。我讀到這是一個浮點問題,但有解決方法嗎?

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

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

當然,嚴格來說,零實際上是一個可以用浮點數正確表示的數字。 真正的問題是pi / 2.0不可能,所以你的cos function 的輸入不是“正確的”。

[*] 把它放在上下文中,作為 1 AU(太陽到地球的平均距離)的比例,它相當於 0.0092毫米,或者大約是人類頭發平均寬度的十分之一......

6.12323399574E-17 是一個非常小的浮點數(小數點后有 17 個零,后跟 6),與 0 幾乎沒有區別。如果您正在處理浮點數(正如任何余弦 function 必須),您將無法避免問題像這樣。 如果您需要將浮點數與零進行比較,則必須使用誤差線(即該數字是否在零附近的某個值范圍內)而不是絕對比較,即使使用比余弦更簡單的函數也是如此。 如果您只需要對結果進行一些數學運算(相加、相乘等等),它的行為幾乎與零完全相同,因此您無需擔心。

嘗試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM