2012-03-20 205 views
0

可當我嘗試計算一些數值罪有人向我解釋爲什麼我的罪過功能沒有返回正確的值...仙功能不給正確的答案

echo sin(2 * pi()); //returns -2.44929359829E-16 (should be 1) 
echo sin(1.9 * pi()); //returns -0.309016994375 (correct) 
echo sin(1 * pi()); //returns 1.22464679915E-16 (should be 0) 
echo sin(1.00001 * pi()); //returns -3.14159265309E-5 (correct) 
echo sin(1.2 * pi()); //returns -0.587785252292 (correct) 
echo sin(0.1 * pi()); //returns 0.309016994375 (correct) 
echo sin(0 * pi()); //returns 0 (correct) 
echo sin(1.5 * pi()); //returns -1 (correct) 

所有的餘弦值都正常工作

+2

只是檢查...你期待度弧度? – wecsam 2012-03-20 00:55:58

+1

接近於0和1的值相當接近。您可能遇到浮點錯誤。 – Bojangles 2012-03-20 00:57:01

+1

Sin(Pi)== 0以及Sin(2 * Pi)== 0.你看到的只是一個舍入誤差 – zerkms 2012-03-20 00:57:14

回答

5

echo sin(2 * pi()); //返回-2.44929359829E-16(應該是1)

應該是0.它足夠接近浮點的雙精度。

echo sin(1 * pi()); //返回1.22464679915E-16(應該爲0)

足夠接近雙精度浮點。

對我很好。

1

這是因爲pi()返回值3.1415926535898,這是一個估計值。

爲了更準確的PI值,嘗試使用M_PI,其值爲3.14159265358979323846

有關在PHP PI更多信息,請閱讀此頁:http://php.net/manual/en/function.pi.php