PHP中如何将数字相除而没有余数?

发布于 2024-11-03 15:50:01 字数 22 浏览 1 评论 0原文

PHP 中如何除数但排除余数?

How does one divide numbers but exclude the remainder in PHP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

夏末的微笑 2024-11-10 15:50:01

只需将结果值转换为 int 即可。

$n = (int) ($i / $m);

有趣的函数(取决于您想要实现的目标以及您是否希望除负整数)是 floor()ceil()round()

Just cast the resulting value to an int.

$n = (int) ($i / $m);

Interesting functions (depending on what you want to achieve and if you expect negative integers to get devided) are floor(), ceil() and round().

沉睡月亮 2024-11-10 15:50:01

PHP 7 为此提供了一个新的内置函数,名为 intdiv

示例:

$result = intdiv(13, 2);

本例中 $result 的值为 6

您可以在 PHP 文档 中找到此函数的完整文档。

PHP 7 has a new built-in function for this named intdiv.

Example:

$result = intdiv(13, 2);

The value of $result in this example will be 6.

You can find the full documentation for this function in the PHP documentation.

梦里寻她 2024-11-10 15:50:01

对于大多数实际目的,接受的答案是正确的。

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

(代码取自 KingCrunch 在另一个答案下的评论)的变体

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

将根据所需的舍入行为避免此问题(请记住模数运算符的结果可能为负)。

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

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

(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).

余罪 2024-11-10 15:50:01

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

or you could just do intval(13 / 2)
gives 6

半岛未凉 2024-11-10 15:50:01

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

如果您需要整数除以 2 的某个幂 ($ b2 ^ N),您可以使用按位右移运算:

$result = $a >> $N;

其中 $N 在 32 位操作系统上是从 1 到 32 的数字,在 64 位操作系统上是 64。

有时它很有用,因为 $b 的情况下最快的决策是 2 的幂。

还有一个向后(要小心,因为溢出!)乘以二的幂的操作:

$result = $a << $N;

希望这对某人也有帮助。

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 is 2 ^ N) you can use bitwise right shift operation:

$result = $a >> $N;

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:

$result = $a << $N;

Hope this helps for someone too.

爱她像谁 2024-11-10 15:50:01

在 php 中使用模数:

$n = $i % $m;

use modulo in php:

$n = $i % $m;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文