用PHP中的余数除

时间:2009-02-23 13:21:08

标签: php

我的代码中有一部分需要除法,而不是小数答案。

我该怎么做?

9 个答案:

答案 0 :(得分:18)

$quotient = intval($dividend / $divisor);
$remainder = $dividend % $divisor;

使用intval代替floor会将商数向零舍入,在红利为负时提供准确的结果。

答案 1 :(得分:13)

您可以使用“%”(模数)运算符执行您所描述的操作。以下代码是使用余数进行除法的示例。

$remainder=$num % $divideby;
$number=explode('.',($num / $divideby));
$answer=$number[0];
echo $answer.' remainder '.$remainder;

答案 2 :(得分:5)

正数和负数的解决方案:

$quotient = $dividend / $divison;
$integer = (int) ($quotient < 0 ? ceil($quotient) : floor($quotient));
$remainder = $dividend % $divisor;

答案 3 :(得分:2)

mathematical correct answer是:

$remainder = $dividend % $divisor;
$quotient = ($dividend - $remainder) / $divisor;

,其余部分验证条件0 <= $remainder < abs($divisor)

不幸的是,从数学的角度来看,许多编程语言(包括PHP)都没有正确处理负数。他们使用different rules来计算值和符号。其余部分。

如果您需要使用负数并获得数学正确的结果,那么您可以使用以下公式:

$remainder = (($dividend % $divider) + abs($divider)) % abs($divider);
$quotient = ($dividend - $remainder) / $divider;

它们依赖于PHP使用负操作数计算模数的方式,如果将它们移植到不同的语言,它们可能无法提供正确的结果。

这是一个实现这些公式的script,并根据上述数学正确答案中提供的值检查结果。

答案 4 :(得分:1)

如果需要查找,%运算符称为mod(或模数)。

答案 5 :(得分:0)

使用此功能它是一个数组     描述     数组gmp_div_qr ( resource $n , resource $d [, int $round ] )

The function divides n by d .

参考:http://php.net/manual/en/function.gmp-div-qr.php

答案 6 :(得分:0)

我必须开发这种方法,因为我的分子是一个浮点值,而模数是舍入结果。

使用Raffaello提供的here方法来划分花车,并从Sam152的解决方案中获取以下内容。

$a = 2.1;
$b = 8;
$fraction = $a / (float) $b;
$parts = explode('.', $fraction);                
$int = $parts[0];
$remainder = $score - ($int*$b) ;  

答案 7 :(得分:0)

使用floor()和模数(%)显示1小时6分钟字符串的示例(如果只有分钟/秒):

$minutes=126;

if($minutes < 60) {
    $span= $minutes.' min.';
} else {
    $rem=$minutes % 60;
    $span=floor($minutes/60).' h. '. (($rem>0) ? $rem.' min.':'');
}

// echo 'Hello Jon Doe, we notify you that even will last for 2 h. 6 min.
echo 'Hello Jon Doe, we notify you that event will last for '.$span;

答案 8 :(得分:0)

这似乎是一个古老的帖子,但是对于那些对此感兴趣的人来说,这是一个非常轻巧的软件包,可以满足您的需求:https://github.com/romainnorberg/residue(欢迎反馈)