PHP关于数字的部分函数

1、检查变量是否含有有效的数字

函数:is_numeric($var)

返回值:布尔值

用途:可以用来检查一个变量是不是保存着一个实际的数字(以整型或者浮点型数的形式出现),还是包含着一个可转换成数字的字符串。(注意PHP中的类型自动转换)

注意:虽然该函数能正确解析带小数点的数字,比如5.1;但是,对于带有千分为分割符的数字,如2,125。这个函数返回false

2、检查数字是否是一个特殊的类型

相关函数:is_float($var)(或者是is_double($var)或者is_real($var)), is_int($var) (或者is_integer($var)或is_long($var)或is_long())

关于浮点型:浮点型在计算机中以二进制形式表示时,只用有限的位数保存尾数和指数。当超出既定的位数时,机会发生溢出。因此,有的时候PHP(就像其他语言一样)不会认为两相等的数就是真正的相等,因为也许在最后的极为上存在着不一致的地方,为了避免这个问题不是要用==检查两个浮点数,而是要确保两个浮点数的差值在一个非常小的范围内,如0.0000001,如果差值小于这个指定的差值,可以认为是相等的。

示例:比较浮点型
<!-- lang: php -->
<?php 
<!-- lang: php -->
$delta = 0.00001;
<!-- lang: php -->

<!-- lang: php -->
$a = 1.00000001;
<!-- lang: php -->
$b = 1.00000000;
<!-- lang: php -->

<!-- lang: php -->
if(abs($a - $b) < $delta){
<!-- lang: php -->
	echo '$a is equal to $b';
<!-- lang: php -->
}else{
<!-- lang: php -->
	echo '$a is not equal to $b';
<!-- lang: php -->
}
<!-- lang: php -->
?>

3、对浮点型数取整

(1)把一个数取整为一个接近的整型数

函数:round($fnum, $accuracy)

说明:$accuracy是一个可选的表示精度的参数,如round(5.12354, 3),结果为5.123

注意:如果一个数位于两个整数之间,PHP会向远离0的方向取整,如round(2.5)为3,round(-2.5)为-3

(2)向下取整

函数:floor($fnum)

理解:向下取整,想“地板的方向”舍入

示例:
<!-- lang: php -->
<?php 
<!-- lang: php -->
$number = floor(2.1);
<!-- lang: php -->
echo "$number\n";    //输出:2
<!-- lang: php -->

<!-- lang: php -->
$number = floor(2.9);
<!-- lang: php -->
echo "$number\n";    //输出:2
<!-- lang: php -->
?>

(3)向上取整

函数:ceil($fnum)

理解:向上取整,向着天花板的方向舍入

示例:
<!-- lang: php -->
<?php 
<!-- lang: php -->
$number = ceil(-2.1);
<!-- lang: php -->
echo "$number\n";    //输出:-2
<!-- lang: php -->

<!-- lang: php -->
$number = ceil(-2.9);
<!-- lang: php -->
echo "$number\n";    //输出:-2
<!-- lang: php -->

<!-- lang: php -->
$number = ceil(2.1);
<!-- lang: php -->
echo "$number\n";    //输出:3
<!-- lang: php -->

<!-- lang: php -->
$number = ceil(2.9);
<!-- lang: php -->
echo "$number\n";    //输出:3 
<!-- lang: php -->
?>

4 操作一系列连续的整数

方式:for循环或函数range($start,$end)

注意:range($start,$end)返回的是一个包含$start到$end的数值的数组,使用该函数的好处是它非常简短,缺陷是如果数组很大会浪费内存。

示例1:每次增量为1
<!-- lang: php -->
 <?php 
<!-- lang: php -->
for($i = $start; $i <= $end; $i++){
<!-- lang: php -->
    #code;
<!-- lang: php -->
}
<!-- lang: php -->
?>

示例2:每次增量不为1
<!-- lang: php -->
<?php 
<!-- lang: php -->
for($i = $start; $i <= $end; $i += $increment){
<!-- lang: php -->
    #code;
<!-- lang: php -->
}
<!-- lang: php -->
?>

示例3:如果想保证使用的数字不只通过枚举产生,使用range()方法

<?php $range = range(40,50); var_dump($range) ; //输出一个数组,11个值分别从40到50 $range = range(50,40); var_dump($range) ; //输出一个数组,11个值分别从50到40 ?>

5、在一个范围内生成随机数

函数:mt_rand($lower, $upper)

返回值:返回一个大于$lower小于$upper的随机数;如果该函数不带任何参数,则会返回一个介于0和最大的随机数直接的数,这个最大的随机数由mt_getrandmax()函数返回。

注意:PHP 4.2之前的版本,在脚本中第一次使用mt_rand()或rand()函数之前,需要通过调用mt_srand()或srand()产生“随机种子”。这个“随机种子”是随机数用于生成返回的随机数的基础,也是对重复性和岁进行两难局面的一种解决方案。使用由microtime()--一个高精度的时间函数--返回的值,就可以得到一个变化迅速而且不重复的种子(即高品质的种子)。初始化这个种子后,就不用再对随机数生成器重复播种了。PHP 4.2以后的版本会自动地生成“随机种子”,但如果你在第一次调用mt_rand()函数之前手动提供了一个种子,PHP不会用自己的新种子替换你的种子。

示例:
<!-- lang: php -->
<?php 
<!-- lang: php -->
$rand_number = mt_rand(1,100);
<!-- lang: php -->
echo $rand_number;
<!-- lang: php -->
echo "\n";    //输出:89,每次会有不同的数字输出介于1到100之间
<!-- lang: php -->

<!-- lang: php -->
$max_rand = mt_getrandmax();
<!-- lang: php -->
echo $max_rand;
<!-- lang: php -->
echo "\n";     //输出:2147483647
<!-- lang: php -->

<!-- lang: php -->
$rand_number = mt_rand();
<!-- lang: php -->
echo $rand_number;
<!-- lang: php -->
echo "\n";     //输出:80509951,每次会有不同的数字输出,介于0到2147483647之间
<!-- lang: php -->
?>

6、 取对数

函数: log($num):表示以e为底$num的对数即自然对数 logx($num):表示以x为底$num的对数,x代表数字,如log2($num),log10($num)等。

7、计算指数

函数: exp($n):计算e的$n次幂

pow($m, $n):计算$m的$n次幂

注意:
    内置的常量M_E是一个与e近似的值,故exp($n)和pow(M_E, $n)是相同的。
    对于ecp()和pow()函数,结果超出了允许的最大数,PHP会返回INF(无穷大);如果结果错误,则PHP会返回NAN(Not A

Number,不是一个数字)

8、格式化数字

函数:number_format($number, $n, $char1, $char2)

参数:
    $number:要格式化的数字,必填项。
    $n:指定一个表示小数点位置的数字,选填
    $char1:指定小数点,如点号(.)等,选填
    $char1:表示千位分割符,选填

示例1:
<!-- lang: php -->
<?php 
<!-- lang: php -->
$number = 1234.56;
<!-- lang: php -->
echo number_format($number);
<!-- lang: php -->
echo "\n";
<!-- lang: php -->
echo number_format($number, 2);
<!-- lang: php -->
echo "\n";
<!-- lang: php -->
echo number_format($number,2,'@','#');
<!-- lang: php -->
echo "\n";
<!-- lang: php -->
?>

输出 结果: 1,235 1,234.56 1#234@56

示例2:事先不清楚小数点后面有几位数
<!-- lang: php -->
<?php 
<!-- lang: php -->
$number = 1234.56;
<!-- lang: php -->
$var = list($int, $dec) = explode('.', $number);
<!-- lang: php -->
echo number_format($number, strlen($dec));
<!-- lang: php -->
?>

 输出结果:

1,234.56

转载于:https://my.oschina.net/syc2013/blog/188212

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值