如何在PHP中除数而不使用余数?

如何在PHP中除数而不使用余数?,php,math,division,Php,Math,Division,在PHP中如何除数而排除余数?只需将结果值转换为int $n = (int) ($i / $m); 有趣的函数(取决于您想要实现什么,以及您是否希望划分负整数)有,和。在php中使用模: $n = $i % $m; 或者你可以直接做intval(13/2) 给出6对于大多数实际情况,公认的答案是正确的 然而,对于整数为64位宽的构建,并非所有可能的整数值都可以表示为双精度浮点;有关详细信息,请参阅我对已接受答案的评论 变化 $n = ($i - $i % $m) / $m; (代码取自Ki

在PHP中如何除数而排除余数?

只需将结果值转换为int

$n = (int) ($i / $m);
有趣的函数(取决于您想要实现什么,以及您是否希望划分负整数)有,和。

在php中使用模:

$n = $i % $m;

或者你可以直接做intval(13/2)
给出6

对于大多数实际情况,公认的答案是正确的

然而,对于整数为64位宽的构建,并非所有可能的整数值都可以表示为双精度浮点;有关详细信息,请参阅我对已接受答案的评论

变化

$n = ($i - $i % $m) / $m;

(代码取自KingCrunch在另一个答案下的评论)将根据所需的舍入行为避免此问题(请记住,模运算符的结果可能是负数)。

除了上面的决定,如
$result=intval($a/$b)
还有一种特殊情况:

如果需要整数除(不带余数)二次幂(
$b
2^N
),可以使用按位右移操作:

$result = $a >> $N;
其中,$N是32位操作系统上从1到32的数字,或64位操作系统上从64到64的数字

有时它很有用,因为对于$b的情况,最快的决定是二的幂

还有一个反向(小心溢出!)操作,用于乘以2的幂:

$result = $a << $N;

$result=$aPHP7为这个名为
intdiv
的函数提供了一个新的内置函数

例如:

$result = intdiv(13, 2);
本例中,
$result
的值为
6


您可以在中找到此功能的完整文档。

您能澄清一下提醒是什么意思吗?Kartik:13/2=6余数1,因为两个平均分为十三个六次,总共剩下一个,哪一个是余数。Kartik开玩笑说请求者拼错了余数。-1-这不仅不能回答问题,还提供了问题特别要求省略的内容:余数。对于那些喜欢过度使用的人:它可以与模块
$n=($i-$i%$m)/$m:严格来说,这是个坏主意。虽然它适用于小值(包括所有32位整数),但浮点不能表示所有64位整数。如果
$i
是2^54+2,
$m
是2,则除法的结果不能是2^53+1,因为这不能表示为双精度浮点(我现在无法测试64位系统上的实际结果)。