informaticaPC

Tutorial de PHP

Tratamiento de números y funciones matemáticas en PHP


Regístrate

Tus datos no serán compartidos, solo nosotros te enviaremos información y novedades

Comprobar si un valor es numérico

Cuando necesitemoscomprobar si un determinado valor es numérico usaremos las funciones de PHP is_int(), is_float() e is_numeric().

Consulta el enlace sobre información sobre tipos de datos facilitado a continuación.

Información

Para comprobar si un valor recibido de un formulario es numérico utilizaremos is_numeric(), ya que los datos del mismo llegan a PHP como cadena de texto, y dicha función sí lo reconocería como tal.

Convertir a número

Para convertir a tipo numérico disponemos de las funciones de PHP settype() e intval(). Para más información consulta el enlace Convertir tipos de datos facilitado a continuación.

Más información

Vea también: [ Convertir tipos de datos ]

Información

Es recomendable usar la intval() en lugar de settype() para convertir a entero, ya que esta última puede devolver valores no esperados.

Redondear números

Utilizaremos las siguientes funciones para redondear números en PHP.

  • round(): redondea un número decimal hacia arriba, indicando como segundo parámetro la precisión del número obtenido (si no indicamos nada quedará sin decimales).

    Si se especifica la precisión numérica y el último dígito es cero se eliminará, devolviéndose un dígito menos de lo especificado en el segundo parámetro.

    Como tercer parámetro podemos especificar cómo deberá realizarse el redondeo (a partir de la versión de PHP 5.3.0) indicando una de las siguientes constantes:

    • PHP_ROUND_HALF_UP: redondea hacia arriba.
    • PHP_ROUND_HALF_DOWN: redondea hacia abajo.
  • ceil(): redondea un número decimal hacia arriba, devolviendo sólo la parte entera.
  • floor(): redondea un número decimal hacia abajo, devolviendo sólo la parte entera.
<?php
    echo "round('55.5701', 3) -> ".round("55.5701", 3)."<br />";
    echo "round('55.5705', 3) -> ".round("55.5705", 3)."<br />";
    echo "round('55.481', 1) -> ".round("55.481", 1)."<br />";
    echo "round('55.537', 2) -> ".round("55.537", 2)."<br />";
    echo "round('55.4') -> ".round("55.4")."<br />";
    echo "round('55.5') -> ".round("55.5")."<p />";

    /* A partir de PHP 5.3.0 */
    echo "round(8.34, 1, PHP_ROUND_HALF_UP) -> ".round(8.34, 1, PHP_ROUND_HALF_UP)."<br />";
    echo "round(8.35, 1, PHP_ROUND_HALF_UP) -> ".round(8.35, 1, PHP_ROUND_HALF_UP)."<br />";
    echo "round(8.36, 1, PHP_ROUND_HALF_UP) -> ".round(8.36, 1, PHP_ROUND_HALF_UP)."<p />";

    /* A partir de PHP 5.3.0 */
    echo "round(8.34, 1, PHP_ROUND_HALF_DOWN) -> ".round(8.34, 1, PHP_ROUND_HALF_DOWN)."<br />";
    echo "round(8.35, 1, PHP_ROUND_HALF_DOWN) -> ".round(8.35, 1, PHP_ROUND_HALF_DOWN)."<br />";
    echo "round(8.36, 1, PHP_ROUND_HALF_DOWN) -> ".round(8.36, 1, PHP_ROUND_HALF_DOWN)."<p />";

    echo "ceil('55.4') -> ".ceil("55.4")."<br />";
    echo "ceil('55.5') -> ".ceil("55.5")."<br />";
    echo "ceil('55.50') -> ".ceil("55.50")."<br />";
    echo "ceil('55.6') -> ".ceil("55.6")."<p />";

    echo "floor('55.4') -> ".floor("55.4")."<br />";
    echo "floor('55.5') -> ".floor("55.5")."<br />";
    echo "floor('55.50') -> ".floor("55.50")."<br />";
    echo "floor('55.6') -> ".floor("55.6");
?>

Descargar ejemplo

Redondear números

Observa que en el primer caso usando round() se elimina el cero al final, devolviéndose sólo dos posiciones decimales en lugar de las tres indicadas en el segundo parámetro.

También podemos usar la función number_format() para redondear números, así como para mostrarlos según el formato especificado:

<?php
    echo number_format(153.751)."<br />";     // Devuelve: 154
    echo number_format(153.751, 1)."<br />";  // Devuelve: 153.8
    echo number_format(153.751, 2);           // Devuelve: 153.75
?>

Descargar ejemplo

Más información

Vea también: [ Conversión de cadenas a números ] - [ round() ] - [ ceil() ] - [ floor() ] - [ number_format() ]

Información

PHP no maneja por defecto de forma correcta cadenas de texto tales como "12,300.2", consulta el enlace anterior sobre conversión de cadenas a números.

Dar formato a un número

Usaremos la función number_format() para dar formato a un número.

NOTA: tal y como se indica en la documentación oficial de PHP, la función number_format() admite uno, dos, o cuatro parámetros (no funciona con tres). Para más información consulta el enlace sobre dicha función al final de este apartado.

<?php
    $numero1 = 5789.445;
    $numero2 = 1355789.58;

    echo number_format($numero1, 2, ',', '.')."<br />";	// Devuelve: 5.789,45
    echo number_format($numero2, 1, ',', '.')."<p />";	 // Devuelve: 1.355.789,6
?>

Descargar ejemplo

Más información

Vea también: [ number_format() ]

Funciones matemáticas

Aparte de otras funciones ya vistas anteriormente, PHP dispone de otras muchas funciones matemáticas. A continuación describiremos algunas ellas:

  • abs(): devuelve el valor absoluto de un número.
  • pow(): devuelve el valor de número elevado a un determinado expontente.
  • max(): retorna el valor más alto.
  • min(): retorna el valor más bajo.
  • rand(): devuelve un número entero aleatorio.
  • sqrt(): devuelve la raíz cuadrada.
  • decbin(): convierte de decimal a binario.
  • bindec(): convierte de binario a decimal.
  • dechex(): convierte de decimal a hexadecimal.
  • hexdec(): convierte de hexadecimal a decimal
<?php
    echo "abs(33) = ".abs(33)."<br />";   // Devuelve: 33
    echo "abs(-5) = ".abs(-5)."<p />";    // Devuelve: 5

    echo "pow(2,3) = ".pow(2,3)."<p />";  // Devuelve: 8

    $aNumeros = array(2, 45, 23, 1, 230, 15);
    echo "min(\$aNumeros) = ".min($aNumeros)."<br />";    // Devuelve: 1
    echo "max(\$aNumeros) = ".max($aNumeros)."<p />";     // Devuelve: 230

    echo "rand() = ".rand()."<br />";             // Devuelve un número aleatorio
    echo "rand(1, 100) = ".rand(1, 100)."<br />"; // Devuelve un número aleatorio entre 1 y 100

    echo "sqrt(9) = ".sqrt(9)."<p />";

    echo "decbin(1000) = ".decbin(1000)."<br />";                   // Devuelve: "1111101000"
    echo "bindec('1111101000') = ".bindec("1111101000")."<p />";	// Devuelve: 1000

    echo "dechex(1000) = ".dechex(1000)."<br />";	   // Devuelve: "3e8"
    echo "hexdec('3e8') = ".hexdec("3e8");              // Devuelve: 1000
?>

Descargar ejemplo

Más información

Vea también: [ Funciones matemáticas ] - [ abs() ] - [ pow() ] - [ max() ] - [ min() ] - [ rand() ] - [ sqrt()

Más información

Vea también: [ decbin() ] - [ bindec() ] - [ dechex() ] - [ hexdec() ]

Primera página Anterior Siguiente Última página
Usamos cookies para ofrecerte una experiencia mejorada, el continuar navegando supone que aceptas su uso