Números PHP
En este capítulo veremos en profundidad los enteros, los flotantes y las cadenas numéricas.
Números PHP
Una cosa a tener en cuenta sobre PHP es que proporciona conversión automática de tipos de datos.
Entonces, si asigna un valor entero a una variable, el tipo de esa variable será automáticamente un número entero. Luego, si asigna una cadena a la misma variable, el tipo cambiará a una cadena.
Esta conversión automática a veces puede romper su código.
Enteros de PHP
2, 256, -256, 10358, -179567 son todos números enteros.
Un entero es un número sin ninguna parte decimal.
Un tipo de datos entero es un número no decimal entre -2147483648 y 2147483647 en sistemas de 32 bits, y entre -9223372036854775808 y 9223372036854775807 en sistemas de 64 bits. Un valor mayor (o menor) que este, se almacenará como flotante, porque excede el límite de un número entero.
Nota: Otra cosa importante que debe saber es que incluso si 4 * 2.5 es 10, el resultado se almacena como flotante, porque uno de los operandos es flotante (2.5).
Aquí hay algunas reglas para números enteros:
- Un número entero debe tener al menos un dígito
- Un número entero NO debe tener un punto decimal
- Un entero puede ser positivo o negativo
- Los números enteros se pueden especificar en tres formatos: decimal (basado en 10), hexadecimal (basado en 16, con el prefijo 0x) u octal (basado en 8, con el prefijo 0)
PHP tiene las siguientes constantes predefinidas para números enteros:
- PHP_INT_MAX: el entero más grande admitido
- PHP_INT_MIN - El entero más pequeño admitido
- PHP_INT_SIZE - El tamaño de un entero en bytes
PHP tiene las siguientes funciones para comprobar si el tipo de una variable es entero:
- es_int()
- is_integer() - alias de is_int()
- is_long() - alias de is_int()
Ejemplo
Compruebe si el tipo de una variable es entero:
<?php
$x = 5985;
var_dump(is_int($x));
$x = 59.85;
var_dump(is_int($x));
?>
Flotadores de PHP
Un float es un número con un punto decimal o un número en forma exponencial.
2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 son todos flotantes.
El tipo de datos flotante normalmente puede almacenar un valor de hasta 1,7976931348623E+308 (depende de la plataforma) y tener una precisión máxima de 14 dígitos.
PHP tiene las siguientes constantes predefinidas para flotantes (desde PHP 7.2):
- PHP_FLOAT_MAX: el número de punto flotante representable más grande
- PHP_FLOAT_MIN - El número de punto flotante positivo representable más pequeño
- - PHP_FLOAT_MAX - El número de punto flotante negativo representable más pequeño
- PHP_FLOAT_DIG: la cantidad de dígitos decimales que se pueden redondear a un flotante y viceversa sin pérdida de precisión
- PHP_FLOAT_EPSILON - El número positivo representable más pequeño x, de modo que x + 1.0 != 1.0
PHP tiene las siguientes funciones para verificar si el tipo de una variable es flotante:
- es_flotante()
- is_double() - alias de is_float()
Ejemplo
Compruebe si el tipo de una variable es flotante:
<?php
$x = 10.365;
var_dump(is_float($x));
?>
PHP Infinito
Un valor numérico mayor que PHP_FLOAT_MAX se considera infinito.
PHP tiene las siguientes funciones para verificar si un valor numérico es finito o infinito:
Sin embargo, la función PHP var_dump() devuelve el tipo de datos y el valor:
Ejemplo
Comprueba si un valor numérico es finito o infinito:
<?php
$x = 1.9e411;
var_dump($x);
?>
PHP NaN
NaN significa No es un número.
NaN se utiliza para operaciones matemáticas imposibles.
PHP tiene las siguientes funciones para verificar si un valor no es un número:
Sin embargo, la función PHP var_dump() devuelve el tipo de datos y el valor:
Ejemplo
El cálculo no válido devolverá un valor de NaN:
<?php
$x = acos(8);
var_dump($x);
?>
Cadenas numéricas de PHP
La función PHP is_numeric() se puede usar para encontrar si una variable es numérica. La función devuelve verdadero si la variable es un número o una cadena numérica, falso en caso contrario.
Ejemplo
Compruebe si la variable es numérica:
<?php
$x = 5985;
var_dump(is_numeric($x));
$x = "5985";
var_dump(is_numeric($x));
$x = "59.85" + 100;
var_dump(is_numeric($x));
$x = "Hello";
var_dump(is_numeric($x));
?>
Nota: A partir de PHP 7.0: la función is_numeric() devolverá FALSO para cadenas numéricas en forma hexadecimal (por ejemplo, 0xf4c3b00c), ya que ya no se consideran cadenas numéricas.
PHP Casting Strings y Floats to Integers
A veces es necesario convertir un valor numérico en otro tipo de datos.
Las funciones (int), (entero) o intval() se utilizan a menudo para convertir un valor en un número entero.
Ejemplo
Convertir flotante y cadena a entero:
<?php
// Cast float to int
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;
echo "<br>";
// Cast string to int
$x =
"23465.768";
$int_cast = (int)$x;
echo $int_cast;
?>