float ceil ( float value)
float floor ( float value)
float round ( float value [, int precision])
通常情况下,我们所需要的精度要比PHP计算得到的精度小,这种情况下,我们就需要用到下面的函数了:ceil()
、floor()
、round()
。
ceil()
和floor()
都只有要进行舍入的数字这一个参数。ceil()
取大于传入值的最小的整数(向上取整),floor()
取小于传入值的最大的整数(向下取整)。来看个例子:
<?php
$someval = 4.9;
$ceiled = ceil($someval);
$floored = floor($someval);
?>
执行上述代码,$ceild
结果为5,$floored
结果为4。
作者说明:
floor()
函数将浮点型转换为整型的工作方式和强制类型转换差不多,而且强制类型转换更快一点。二者的区别是在负数的处理上,floor()
将-4.5向下取整得到-5,而强制类型转换的结果是-4、
另外一个函数是round()
,它有两个参数:要进行舍入的数和要保留的小数位数。如果最后正好是5的话,round()
将会自动进上一位。
<?php
$a = round(4.9); // 5
$b = round(4.5); // 5
$c = round(4.4999); // 4
$d = round(4.123456, 3); // 4.123
$e = round(4.12345, 4); // 4.1235
$f = round(1000 / 160); // 6
?>
如上所示,4.5进位成了5,而4.4999则被舍去成了4。第四行中我们第一次使用两个参数,这样能将给定的数值舍入到想要的小数位数。第五行中,保留四位小数,结果是4.1235。根据四舍五入的原则,如果原给定的数值是4.12344,那么结果就是4.1234了。
最后一行也是一个经常使用的例子。假设你要组织一次大的旅行,有1000人参加。你需要知道你要用多少节车厢。假设一节车厢能容纳160人,1000/160四舍五入后得到整数6.现在问题来了,1000/160实际等于6.25。因为6.25距离6更近,PHP将小时舍掉了。这样多出来的人就没法走了。怎么办呢?解决方法很简单,用ceil()
函数就可以了。在不同情况下需要使用不同的函数。具体问题具体分析就好。