number abs ( number value)
float sqrt ( float value)
number pow ( number base, number exponent)
float hypot ( float num1, float num2)
在非三角函数方面,对数字进行操作时有几个关键的函数,其中最重要的是abs()
、sqrt()
和pow()
。
abs()
是最基本的函数,它返回你传入参数的绝对值。绝对值的含义,就是说如果你传入的是正数则保持不变,传入的是负数,则返回其对应的正数值。
<?php
abs(50);
abs(-12);
?>
第一行返回50,第二行返回12。abs()
可以将整型或浮点型作为其参数并返回相同类型的值:
<?php
abs(50.1);
abs(-12.5);
?>
第一行返回50.1,第二行返回12.5。如你所见,不管是整型还是浮点型,abs()
函数都能处理。如果你不知道为什么要用abs()
,想一下,如果用PHP脚本来处理类似“你想买多少件T-Shirt”这种问题的时候,你需要自己写代码来检查输入的值是否小于0,如果小于0,则需要有适当的警告。而如果直接用abs()
处理一下就简单多了,它可以保证是正数,之后就可以将返回的结果添加购物车进行处理了。
接下来说sqrt()
,它只接受一个参数,返回这个参数的平方根。用起来也非常方便:
<?php
print sqrt(25);
print sqrt(26);
?>
第一行输出5,第二行输出5.0990195135928。
第三个关键的函数是pow()
,有两个参数,一个底数,一个指数。也就是说,如果第二个参数是2,则返回第一个参数的平方;第二个参数是3,返回第一个参数的立方,就像这样:
<?php
print pow(10,2); // 100
print pow(10,3); // 1000
print pow(10,4); // 10000
print pow(-10, 4); // 10000
?>
前三行的结果分别是10*10
,10*10*10
和10*10*10*10
。注意第四行第一个参数是-10,别担心,pow()
第一个参数可正可负。第四行输出的结果是正数,这是因为第二个参数为偶数,“负负得正”。
pow()
的第二个参数也可以是负数,也就是得到负数次幂。例如,pow(10, -1)
得到0.1,pow(10, -2)
得到0.01,pow(10, -3)
为0.001,以此类推。
使用pow()
的时候有个难点,就是当-1和0.5作为pow()
的参数时——这不是PHP的bug,而是我们数字系统就是这么构建的。如果你尝试计算一个负数的平方根你就知道这个是不可能的了。假设Y的平方根是X,X乘以X得到Y。如果Y是负数,那么X也应该师傅的。但是我们又知道负负得正,则Y应该是正的。因此,求负数的平方根是不可能的。传递给pow()
的参数是0.5的时候,就相当于是在计算第一个参数的平方根。而负数是没有平方根的,所以当第一个参数为负,第二个参数是0.5的时候会造成错误。
即便你不知道这些数学理论也没什么关系,pow()
通常在正数范围内使用,例如直接调用函数来计算8*8*8*8
等。
另外一个你可能时不时用到的函数是hypot()
。hypot()
有两个参数,假设分别为X
和Y
,则hypot()
返回的是sqrt((X * X) + (Y * Y))
。如果你知道毕达哥拉斯定理(中文名:勾股定理),你就会知道hypot()
是用来计算向量的长度(或三角形的斜边,这取决于你如何看待它)的。