PHP中如何将数字相除而没有余数?
PHP 中如何除数但排除余数?
How does one divide numbers but exclude the remainder in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
PHP 中如何除数但排除余数?
How does one divide numbers but exclude the remainder in PHP?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
只需将结果值转换为 int 即可。
有趣的函数(取决于您想要实现的目标以及您是否希望除负整数)是
floor()
、
ceil()
和round()
。Just cast the resulting value to an int.
Interesting functions (depending on what you want to achieve and if you expect negative integers to get devided) are
floor()
,ceil()
andround()
.PHP 7 为此提供了一个新的内置函数,名为
intdiv
。示例:
本例中
$result
的值为6
。您可以在 PHP 文档 中找到此函数的完整文档。
PHP 7 has a new built-in function for this named
intdiv
.Example:
The value of
$result
in this example will be6
.You can find the full documentation for this function in the PHP documentation.
对于大多数实际目的,接受的答案是正确的。
然而,对于整数为 64 位宽的构建,并非所有可能的整数值都可以表示为双精度浮点数;有关详细信息,请参阅我对已接受答案的评论。
(代码取自 KingCrunch 在另一个答案下的评论)的变体
将根据所需的舍入行为避免此问题(请记住模数运算符的结果可能为负)。
For most practical purposes, the accepted answer is correct.
However, for builds where integers are 64 bits wide, not all possible integer values are representable as a double-precision float; See my comment on the accepted answer for details.
A variation of
(code taken from KingCrunch's comment under another answer) will avoid this problem depending on the desired rounding behavior (bear in mind that the result of the modulus operator may be negative).
或者你可以只做 intval(13 / 2)
给出 6
or you could just do intval(13 / 2)
gives 6
除了上面的决策如
$result = intval($a / $b)
之外,还有一种特殊情况:如果您需要整数除以 2 的某个幂 (
$ b
是2 ^ N
),您可以使用按位右移运算:其中 $N 在 32 位操作系统上是从 1 到 32 的数字,在 64 位操作系统上是 64。
有时它很有用,因为 $b 的情况下最快的决策是 2 的幂。
还有一个向后(要小心,因为溢出!)乘以二的幂的操作:
希望这对某人也有帮助。
In addition to decisions above like
$result = intval($a / $b)
there is one particular case:If you need an integer division (without remainder) by some power of two (
$b
is2 ^ N
) you can use bitwise right shift operation:where $N is number from 1 to 32 on 32-bit operating system or 64 for 64-bit ones.
Sometimes it's useful because it's fastest decision for case of $b is some power of two.
And there's a backward (be careful due to overflow!) operation for multiplying by power of two:
Hope this helps for someone too.
在 php 中使用模数:
use modulo in php: