我的代码中有一部分需要除法,而不是小数答案。
我该怎么做?
答案 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)
$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 .
答案 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(欢迎反馈)