php取余(%)一直出错


放代码

$price=300;
$shop_bl=18;
$zbl=($shop_bl)/100;
$cbl=(100-$shop_bl)/100;
$shopprice=$price*$zbl;
$price=$price*$cbl;
$cl=$price%10;
echo $cl;

口算结果是6,但PHP的运算结果是5。

百思不得其解。

最后把

$cl=$price%10;

改成了

$cl=fmod(floatval($price),10);

问题解决。

然后翻看资料。

//理论上应该输出45才对,可是实际运算结果是44
$val=9.45;
$result=$val*100;
echo intval($result);   //这里输出944
echo '';
echo $result%100;    //这里输出44,因为php默认对变量进行取整进行取余运算的
echo '';
echo fmod(floatval($result),100);  //这里输出45
echo '';

//对于大整数,php会出现溢出,可能返回负数情况(这是因为php默认使用整数取余的,所以你要把它转换成float类型(如上))可以这样做
$v = 123123123123;
echo $v%5;      //这里输出-1
echo '';
echo fmod(floatval($v),5);  //这里输出3
echo '';
die;

//封装方法,取余
function Kmod($bn, $sn)
{
    //fmod() 函数返回除法的浮点数余数
    return intval(fmod(floatval($bn), $sn));
}



评论


乖,登录后才可以留言!