Разделить целое число и получить целочисленное значение
в таких языках, как C или Python, если я делю целое число на целое число, я получаю целое число:
>>> 8/3
2
но в PHP, если я делю целое число на другое целое число с /, иногда я получаю поплавок:
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
Я хотел бы сделать разделение, как в Python или C, так что 8/3-это 2. Как я могу сделать это в PHP?
8 ответов:
в PHP 7, есть intdiv функция делает именно то, что вы хотите.
использование:
intdiv(8, 3);возвращает
2.
в 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. В языке нет оператора для целочисленного деления, но есть несколько вариантов округления коэффициента с плавающей запятой до целого числа:
<?php $pos = 1; $neg = -1; $divisor = 2; // No rounding (float division) var_dump($pos / $divisor); // 0.5 var_dump($neg / $divisor); // -0.5 // Round toward zero (like C integer division) var_dump((int)($pos / $divisor)); // 0 var_dump((int)($neg / $divisor)); // 0 // Round half away from zero var_dump(round($pos / $divisor)); // 1 var_dump(round($neg / $divisor)); // -1 // Round down var_dump(floor($pos / $divisor)); // 0 var_dump(floor($neg / $divisor)); // -1 # And on PHP 7 you can round toward zero with intdiv(): var_dump(intdiv($pos, $divisor)); // 0 var_dump(intdiv($neg, $divisor)); // 0 Round toward zeroна PHP 7 Вы можете использовать
intdiv($p, $q)для непосредственного выполнения целочисленного деления. Это эквивалентно(int)($p / $q)на PHP 5.
Comments