C や Python などの言語では、整数を整数で割ると、整数が得られます。
>>> 8/3
2
しかし、PHP では、整数を別の整数で割ると/
、浮動小数点数が得られることがあります。
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
8/3 が 2 になるように、Python や C のように除算を行いたいのですが、PHP でそれを行うにはどうすればよいですか?
C や Python などの言語では、整数を整数で割ると、整数が得られます。
>>> 8/3
2
しかし、PHP では、整数を別の整数で割ると/
、浮動小数点数が得られることがあります。
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
8/3 が 2 になるように、Python や C のように除算を行いたいのですが、PHP でそれを行うにはどうすればよいですか?
PHPには整数除算演算子はありません。1/2はフロート0.5を生成します。値を整数にキャストして下方に丸めることができます。または、round()関数を使用して丸めをより細かく制御できます。
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
これを使って....
intval(1700000 / 300000 )...
これは整数値を返します。
PHP で整数除算を実行するには、いくつかの方法があります。この言語には整数除算の演算子はありませんが、浮動小数点の商を整数に丸めるオプションがいくつかあります。
<?php
$pos = 1;
$neg = -1;
$divisor = 2;
// No rounding (float division)
var_dump($pos / $divisor); // 0.5 (float)
var_dump($neg / $divisor); // -0.5 (float)
// Round toward zero (like C integer division)
var_dump((int)($pos / $divisor)); // 0 (int)
var_dump((int)($neg / $divisor)); // 0 (int)
// Round half away from zero
var_dump(round($pos / $divisor)); // 1 (float)
var_dump(round($neg / $divisor)); // -1 (float)
// Round down
var_dump(floor($pos / $divisor)); // 0 (float)
var_dump(floor($neg / $divisor)); // -1 (float)
# And on PHP 7 you can round toward zero with intdiv():
var_dump(intdiv($pos, $divisor)); // 0 (int)
var_dump(intdiv($neg, $divisor)); // 0 (int) Rounded toward zero
PHP 7 ではintdiv($p, $q)
、整数除算を直接実行するために使用できます。(int)($p / $q)
これはPHP 5と同等です。
(int)(1700000 / 300000);
型キャストを使用します。
末尾に |0 を追加すると、ショートフォームを使用できます
8/3|0