PHP Conference Japan 2024

intdiv

(PHP 7, PHP 8)

intdiv整數除法

說明

intdiv(int $num1, int $num2): int

回傳 num1 除以 num2 的整數商。

參數

num1

被除數。

num2

除數,用於除 num1

回傳值

num1 除以 num2 的整數商。

錯誤/例外

如果 num20,則會拋出 DivisionByZeroError 例外。如果 num1PHP_INT_MINnum2-1,則會拋出 ArithmeticError 例外。

範例

範例 #1 intdiv() 範例

<?php
var_dump
(intdiv(3, 2));
var_dump(intdiv(-3, 2));
var_dump(intdiv(3, -2));
var_dump(intdiv(-3, -2));
var_dump(intdiv(PHP_INT_MAX, PHP_INT_MAX));
var_dump(intdiv(PHP_INT_MIN, PHP_INT_MIN));
var_dump(intdiv(PHP_INT_MIN, -1));
var_dump(intdiv(1, 0));
?>
int(1)
int(-1)
int(-1)
int(1)
int(1)
int(1)

Fatal error: Uncaught ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer in %s on line 8
Fatal error: Uncaught DivisionByZeroError: Division by zero in %s on line 9

參見

  • / - 浮點數除法
  • % - 整數取餘數
  • fmod() - 返回參數除法的浮點餘數 (模數) - 浮點數取模

新增註記

使用者貢獻的註記 3 則註記

AmeenRoss
9 年前
這看起來確實等於 intdiv

<?php
function intdiv_1($a, $b){
return (
$a - $a % $b) / $b;
}
?>

然而,這並非如此

<?php
函式 intdiv_2($a, $b){
返回
floor($a / $b);
}
?>

考慮其中一個參數為負數的例子
<?php
$param1
= -10;
$param2 = 3;
print_r([
'modulus' => intdiv_1($param1, $param2),
'floor' => intdiv_2($param1, $param2),
]);

/**
* 陣列
* (
* [modulus] => -3
* [floor] => -4
* )
*/
?>
oittaa
2 年前
Python 風格的整數除法,結果總是向負無窮大捨入。

1 // 2 為 0
(-1) // 2 為 -1
1 // (-2) 為 -1
(-1) // (-2) 為 0

<?php
函式 intdiv_py(int $num1, int $num2): int {
如果 (
$num1 < 0 互斥或 $num2 < 0){
$num1 = abs($num1);
$num2 = abs($num2);
$remainder = $num1 % $num2;
返回
$remainder ? -1 -($num1 - $remainder) / $num2 : -$num1 / $num2;
}
返回
intdiv($num1, $num2);
}

var_dump(intdiv_py(1, 2)); // 0
var_dump(intdiv_py(-1, 2)); // -1
var_dump(intdiv_py(1, -2)); // -1
var_dump(intdiv_py(-1, -2)); // 0
?>
sree.millu@gmail.com
5 年前
@AmeenRoss
這看起來和 intdiv 的結果並不相同

<?php
function intdiv_1($a, $b){
return (
$a - $a % $b) / $b;
}
?>

參考以下程式碼範例
<?php

$x
= 5.6;
$y = 1.4 ;

echo
intdiv($x,$y);

echo
"\n";

function
intdiv_1($a, $b){
return (
$a - $a % $b) / $b;
}

echo
intdiv_1($x,$y);
?>

//輸出
5
4
To Top