php - por - Divide un entero y obtén un valor entero
int to float php (8)
En lenguajes como C o Python, si divido un entero por un entero, obtengo un entero:
>>> 8/3
2
Pero en PHP, si divido un entero por otro entero con /
, a veces obtengo un float:
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
Me gustaría hacer una división como en Python o C, para que 8/3 sea 2. ¿Cómo puedo hacer eso en PHP?
Hay varias formas de realizar la división entera en PHP. El idioma no tiene un operador para la división de enteros, pero hay varias opciones para redondear el cociente de punto flotante a un entero:
<?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
En PHP 7 puede usar intdiv para realizar directamente la división de enteros. Esto es equivalente a (int)($p / $q)
en PHP 5.
No hay operador de división de enteros en PHP. 1/2 produce el flotador 0.5. El valor se puede convertir en un entero para redondearlo hacia abajo, o la función round () proporciona un control más preciso sobre el redondeo.
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
Para PHP versión 7 => intdiv(a,b)
Y para versiones menores de 7 (como 5.6) => (int)floor(abs(a/b))
Puedes usar la forma corta agregando | 0 al final
8/3 | 0
utilizar esta....
intval(1700000 / 300000 )...
Esto devuelve el valor entero.
(int)(1700000 / 300000);
utilizar el tipo de fundición.