仙功能不给正确的答案
问题描述:
可当我尝试计算一些数值罪有人向我解释为什么我的罪过功能没有返回正确的值...仙功能不给正确的答案
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)
所有的余弦值都正常工作
答
echo sin(2 * pi()); //返回-2.44929359829E-16(应该是1)
应该是0.它足够接近浮点的双精度。
echo sin(1 * pi()); //返回1.22464679915E-16(应该为0)
足够接近双精度浮点。
对我很好。
答
这是因为pi()返回值3.1415926535898,这是一个估计值。
为了更准确的PI值,尝试使用M_PI,其值为3.14159265358979323846
有关在PHP PI更多信息,请阅读此页:http://php.net/manual/en/function.pi.php
只是检查...你期待度弧度? – wecsam 2012-03-20 00:55:58
接近于0和1的值相当接近。您可能遇到浮点错误。 – Bojangles 2012-03-20 00:57:01
Sin(Pi)== 0以及Sin(2 * Pi)== 0.你看到的只是一个舍入误差 – zerkms 2012-03-20 00:57:14