在使用php进行一些运算时,有时候运算后是无尽循环或不循环小数,影响运算结果的显示或计算,那么该怎样对这些小数进行一些简单的处理呢?
1、直接转换为整数,放弃小数点后的数值
<?php
$xiaoshu ="3.1875";
$fistcx=strpos($xiaoshu,".");
echo substr($str,0,$fistcx);
?>
首先假设一个小数为3.1875,首先通过strpos函数查找"."号出现的第一次位置,然后使用substr函数,从第一位开始截取到.号出现的位置就可以实现获得小数的整数部分.
<?php
$xiaoshu ="3.1875";
echo intval($xiaoshu);
?>
php中的intval函数可以直接对小数进行取整.
2、向上取整
<?php
$xiaoshu2 ="1.1379";
$xiaoshu2 ="1.1579";
echo ceil($xiaoshu2);
?>
ceil函数可以向上进行取整,即有小数直接整数部分结果+1.
3、向下的方式取整
<?php
$xiaoshu3 ="5.135";
$xiaoshu3 ="6.14766";
echo floor($xiaoshu3);
?>
使用floor函数所得到的数值,正整数部分无限向0,即整数加1后减1,负数部分无限小.
4、四舍五入
<?php
$xiaoshu4 ="6.133553";
$xiaoshu4 ="3.7682";
echo round($xiaoshu4,2);
echo sprintf("%.2f",$xiaoshu4);
echo number_format($xiaoshu4, 2); //10.46
?>
round函数第一个参数为数值,第二个为位数.或者sprintf直接格式化字符串,千位分组来格式化数字的函数
5、保留指定位数的小数
<?php
$weishu="3";
$xyqzxs="87.12137";
$cws=pow(10,$weishu);
echo intval(($xyqzxs*$cws))/$cws;
echo ceil(($xyqzxs*$cws))/$cws;
echo floor(($xyqzxs*$cws))/$cws;
?>
首先定义一个变量存储需要求得小数的位数,这里设置为3,然后定义小数的准确数值87.12137,通过pow函数求得10的N位数次方的值,用于将小数转为整数去除指定位数之后的小数,从而保留需要保留位数的小数.
结合以上对整数部分的处理方法,分别使用intval()、ceil()、floor()三个对整数处理的函数处理得到整数部分,然后再除以之前用于保留小数的10的N次方换算值,再次将整数部分变为小数,我们就能够得到指定位数的小数或向上取小数、向下取小数三种处理不同的答案.