94

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 でそれを行うにはどうすればよいですか?

4

9 に答える 9

105

関数を使用round()して整数の丸められた値を取得します。

round(8 / 3); // 3

また

関数を使用floor()して整数値を取得します

floor(8 / 3); // 2
于 2012-10-11T05:07:58.000 に答える
79

PHP 7 には、正確に必要な機能を実行するintdiv関数があります。

使用法:

intdiv(8, 3);

を返します2

于 2016-02-03T15:43:41.407 に答える
26

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)     

PHPマニュアル

于 2012-10-11T05:08:49.407 に答える
9

これを使って....

intval(1700000 / 300000 )...

これは整数値を返します。

于 2012-10-11T05:09:05.837 に答える
6

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と同等です。

于 2016-11-17T17:46:05.663 に答える
5
(int)(1700000 / 300000);

型キャストを使用します。

于 2012-10-11T05:14:23.163 に答える
4

末尾に |0 を追加すると、ショートフォームを使用できます

8/3|0

于 2016-02-29T22:44:47.027 に答える