开发者

How to divide numbers without remainder in PHP?

How does one 开发者_如何转开发divide numbers but exclude the remainder in PHP?


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


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.


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


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.


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


use modulo in php:

$n = $i % $m;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜