Curso de PHP

Operadores aritméticos en PHP: suma, resta, módulo y exponente

Por Víctor Peña · Publicado el

Operadores aritméticos en PHP

Hola, ¿cómo están? Continuando con el curso de PHP, hoy veremos los operadores aritméticos, que son los que nos permiten realizar cálculos dentro de nuestros programas.

¡Empecemos!

Qué son los operadores aritméticos

Los operadores aritméticos realizan operaciones matemáticas entre dos valores, que pueden ser números directos o variables. Son los mismos que aprendiste en el colegio, con un par de añadidos que probablemente no conozcas.

Los operadores básicos

<?php
$a = 10;
$b = 3;

echo $a + $b;   // 13  suma
echo $a - $b;   // 7   resta
echo $a * $b;   // 30  multiplicación
echo $a / $b;   // 3.3333333333333  división

Un detalle sobre la división: el resultado no siempre es un entero. PHP devuelve un decimal si la división no es exacta, aunque los dos operandos sean enteros.

El módulo: el resto de la división

<?php
echo 10 % 3;   // 1
echo 10 % 2;   // 0
echo 17 % 5;   // 2

El módulo devuelve lo que sobra de una división entera. Parece un operador poco útil hasta que descubres para qué sirve realmente.

Saber si un número es par:

<?php
$numero = 8;

if ($numero % 2 === 0) {
    echo "Es par";
} else {
    echo "Es impar";
}

Alternar filas de una tabla. Cuando recorras registros de una base de datos y quieras pintar una fila sí y otra no, el módulo es la herramienta.

Repartir en grupos. Si tienes 100 elementos y quieres agruparlos de 7 en 7, el módulo te dice cuántos sobran.

La exponenciación

<?php
echo 2 ** 3;    // 8   dos elevado a tres
echo 5 ** 2;    // 25
echo 9 ** 0.5;  // 3   la raíz cuadrada

El operador ** eleva un número a una potencia. Con exponente 0.5 obtienes la raíz cuadrada, aunque para eso existe la función sqrt(), que se lee mejor.

División entera

Cuando quieres el resultado de una división sin decimales, PHP tiene una función específica:

<?php
echo intdiv(10, 3);   // 3
echo 10 / 3;          // 3.3333333333333

Operadores de asignación

Estos combinan una operación con la asignación. Son atajos, y los vas a ver constantemente:

<?php
$total = 100;

$total += 50;   // equivale a $total = $total + 50;   → 150
$total -= 30;   // resta                              → 120
$total *= 2;    // multiplica                         → 240
$total /= 4;    // divide                             → 60
$total %= 7;    // módulo                             → 4

También existe para concatenar texto:

<?php
$mensaje = "Hola";
$mensaje .= " mundo";   // Hola mundo

Incremento y decremento

Suman o restan uno. Se usan sobre todo dentro de bucles:

<?php
$contador = 5;

$contador++;   // ahora vale 6
$contador--;   // vuelve a 5

Y aquí una sutileza que aparece en muchas entrevistas de trabajo: no es lo mismo poner el operador antes o después.

<?php
$a = 5;
echo $a++;   // imprime 5, y luego $a vale 6
echo "\n";

$b = 5;
echo ++$b;   // imprime 6, porque incrementa primero
  • $a++ (post-incremento): usa el valor, después incrementa.
  • ++$a (pre-incremento): incrementa, después usa el valor.

Si el resultado no se usa en la misma línea, ambos son equivalentes. En un bucle normal da exactamente igual cuál escribas.

Precedencia de operadores

PHP respeta el orden matemático de siempre:

<?php
echo 2 + 3 * 4;      // 14, no 20
echo (2 + 3) * 4;    // 20

La multiplicación y la división se resuelven antes que la suma y la resta. Usa paréntesis siempre que haya la menor duda: no cuesta nada y hace el código legible para quien venga después, incluido tú dentro de seis meses.

Cuidado con los decimales

Este comportamiento sorprende a todo el mundo la primera vez:

<?php
var_dump(0.1 + 0.2 == 0.3);   // bool(false)

No es un error de PHP: así funcionan los números decimales en prácticamente todos los lenguajes, por cómo se almacenan internamente. 0.1 + 0.2 da 0.30000000000000004.

La consecuencia práctica: nunca compares decimales con ==, y sobre todo, no uses decimales para dinero. Para importes, la solución habitual es trabajar en centavos como enteros, o usar una librería especializada. Un céntimo perdido en cada operación se nota al final del mes.

Funciones matemáticas útiles

PHP trae bastantes funciones que te ahorran cálculos:

<?php
echo abs(-15);        // 15    valor absoluto
echo round(3.7);      // 4     redondea
echo round(3.14159, 2); // 3.14  con dos decimales
echo floor(3.9);      // 3     redondea hacia abajo
echo ceil(3.1);       // 4     redondea hacia arriba
echo sqrt(16);        // 4     raíz cuadrada
echo max(5, 12, 3);   // 12    el mayor
echo min(5, 12, 3);   // 3     el menor
echo rand(1, 100);    // un número aleatorio

round() con decimales es la que más vas a usar al mostrar precios o promedios en pantalla.

Un ejemplo práctico

Calculemos el total de una compra con IVA:

<?php
const IVA = 0.13;

$precio = 250;
$cantidad = 3;

$subtotal = $precio * $cantidad;
$impuesto = $subtotal * IVA;
$total = $subtotal + $impuesto;

echo "Subtotal: " . $subtotal . "\n";        // 750
echo "IVA: " . round($impuesto, 2) . "\n";   // 97.5
echo "Total: " . round($total, 2);           // 847.5

Fíjate cómo la constante IVA de la lección anterior encaja de forma natural.

Para cerrar

Los operadores aritméticos son sencillos, pero hay tres cosas que vale la pena retener: el módulo sirve para mucho más que sacar restos, los paréntesis son gratis y siempre ayudan, y los decimales no se comparan con ==.

En la siguiente lección veremos los operadores lógicos y de comparación.

Saludos y éxitos.

Norvic Software

Desarrollamos el software que tu empresa necesita

Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.

Solicitar cotizaciónVer todos los servicios

Cotización sin costo · Respuesta directa por WhatsApp