



前面的示例中,保留指定数量的小数位时会直接舍弃多余的数据,并没有四舍五入,实际应用中,如果需要进行四舍五入操作,可以使用round()函数完成。下面的代码演示了round()函数的使用。
<?php
echo round(123.1,2),"<br>";
echo round(123.456,2),"<br>";
echo round(123.451,2);
?>
代码执行结果见图3-39。
图 3-39
如果需要获取数据的整数部分,可以将round()函数的第二个参数设置为0,这也是此参数的默认值,此时只会返回整数部分,小数部分四舍五入。
此外,相关操作的函数还包括:
● floor()函数,返回小于或等于参数的最大整数。
● ceil()函数,返回大于或等于参数的最小整数。
下面的代码演示了这两个函数的应用。
<?php
echo floor(11.9),"<br>";
echo floor(-11.9),"<br>";
echo ceil(11.9),"<br>";
echo ceil(-11.9);
?>
代码执行结果见图3-40。
图 3-40
使用%运算符时,会得到整数相除后的余数,如果需要获取浮点数相除的余数,可以使用fmod()函数。下面的代码演示了%运算符与fmod()函数计算结果的不同。
<?php
$x = 11.9;
$y = 3.1;
echo $x % $y,"<br>";
echo fmod($x, $y);
?>
代码执行会显示2和2.6。本例中,在使用%运算符时,会自动将两个运算数转换为整数后计算,计算的是11除以3的余数为2;fmod()函数会直接使用浮点数进行求余计算,即11.9中包含3个3.1以外,余数为2.6。
intdiv()函数,用于获取两个整数相除的结果,它会返回一个整数,如果参数不是整数会先转换为整数后进行计算,下面的代码演示了此函数与/运算符计算结果的区别。
<?php
$x = 11.9;
$y = 3.1;
echo $x / $y,"<br>";
echo intdiv($x, $y);
?>
代码执行结果见图3-41。
图 3-41
本例中,使用/运算符计算的结果为浮点数,只有在能整除时才返回整数;而intdiv()函数会将两个参数都转换为整数后执行除法运算,取整数商。
下面是一些常用的计算函数:
● abs()函数,返回参数的绝对值。
● pow()函数,如pow(x,y)求x的y次方。
● min()函数,返回参数列表中的最小值。
● max()函数,返回参数列表中的最大值。
● sqrt()函数,求平方根,如参数为负数会返回NaN值。此外,如果对$x开$n次方,可以使用pow($x,1/$n)计算,如pow(27,1/3)返回3。
● exp()函数,计算e的指数。
● log()函数,自然对数。
● log10()函数,计算以10为底的对数。
● pi()函数,返回圆周率的值。
PHP数学模块中常用的三角函数包括:
● acos()函数,求反余弦。
● acosh()函数,求反双曲余弦。
● asin()函数,求反正弦。
● asinh()函数,求反双曲正弦。
● atan()函数,求反正切。
● atan2()函数,求两个参数的反正切。
● atanh()函数,求反双曲正切。
● hypot()函数,根据直角三角形中两个直角边的长度计算其斜边长度,如hypot(3,4)返回5。
● cos()函数,求余弦。
● cosh()函数,求双曲余弦。
● deg2rad()函数,将角度转换为弧度,如deg2rad(90)返回1.5707963267949,即pi()/2的值。
● rad2deg()函数,将弧度转换为相应的角度,如rad2deg(pi())返回180。
● sin()函数,求正弦。
● sinh()函数,求双曲正弦。
● tan()函数,求正切。
● tanh()函数,求双曲正切。
mt_rand()和rand()函数,产生一个随机整数,其中,mt_rand()函数的执行效率更高。如果需要指定随机数的范围,可以使用两个参数,参数一为可能的最小值,参数二为可能的最大值,如下面的代码演示了mt_rand()函数的使用。
执行代码会随机显示10个1到9的整数,可以刷新页面来观察运行结果。
如果不指定随机数的范围,那么,它的范围将是0到mt_getrandmax()函数返回值之间;其中,mt_getrandmax()函数返回的是平台所支持的最大的随机整数值。
下面的代码(/lib/cf/tRnd.php)定义了tRnd类,用于生成一些常用的随机字符串。
可以参考如下代码生成随机字符。
<?php
require_once $_SERVER["DOCUMENT_ROOT"]."/lib/cf/tRnd.php";
use cf\tRnd;
echo tRnd::getUpper(),"<br>";
echo tRnd::getLower(),"<br>";
echo tRnd::getStr(8);
?>
执行代码会随机显示一个大写字母和一个小写字母,以及一个包含了8个随机字符的字符串。