CやPythonのような言語では、整数を整数で割ると、整数が得られます。
>>> 8/3
2
しかし、PHPでは、整数を別の整数で除算すると/、floatが発生することがあります。
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
PythonやCのように除算を行いたいので、8/3は2になります。PHPでそれを行うにはどうすればよいですか?
CやPythonのような言語では、整数を整数で割ると、整数が得られます。
>>> 8/3
2
しかし、PHPでは、整数を別の整数で除算すると/、floatが発生することがあります。
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
PythonやCのように除算を行いたいので、8/3は2になります。PHPでそれを行うにはどうすればよいですか?
6。5または6は何が必要ですか。
ceil()とfloor()違っ切り上げ関数です。
回答:
floor()を返すfloatので2.0、ではなく取得することに注意してください2。必ず整数を得ることを確認するために結果をキャスト:(int)floor(8/3)
intdiv)ゼロに向かって切り捨てられますが、Pythonは負の無限大に向かって切り捨てられます。
(int)(1700000 / 300000);
型キャストを使用します。
(0.1 + 0.7) * 10です7.99999999999999911182158029987476766109466552734375。(int)キャストがこの値を7に切り捨てるのは完全に正しいです。ここでの質問と回答の場合のように、整数を別の整数で除算する場合、このような浮動小数点エラーは切り捨て後の結果を変更できません。
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)PHP5と同等です。
末尾に| 0を追加すると、短縮形を使用できます
8/3 | 0
PHP 7の場合、intdiv()関数を試してください。
構文:
int intdiv($dividend, $divisor)
<?php
$dividend = 19;
$divisor = 3;
echo intdiv($dividend, $divisor);
?>
古いバージョンのPHPの場合:
<?php
// Convert $total_minutes to hours and minutes.
$total_minutes = 640;
$minutes = $total_minutes % 60;
$hours = ($total_minutes - $minutes) / 60;
echo "Time taken was $hours hours $minutes minutes";
?>
PHPバージョン7の場合=> intdiv(a,b)
また、バージョンが7未満の場合(5.6など)=> (int)floor(abs(a/b))