Operaciones aritméticas en PHP

Números

Los números decimales se escriben con punto (.), no con coma (,).


Operadores aritméticos

Los operadores aritméticos básicos son los siguientes:
EjemploNombreResultado
-$aNegaciónEl opuesto de $a.
$a + $bSumaSuma de $a y $b.
$a - $bRestaDiferencia entre $a y $b.
$a * $bMultiplicaciónProducto de $a y $b.
$a / $bDivisiónCociente de $a y $b.
$a % $bMóduloResto de $a dividido por $b.
Cuidado: Los números se convierten a enteros antes de efectuar el cálculo. Por ejemplo, 5 % 2.5 da como resultado 1 y no 0 porque calcula el resto de 5 entre 2, no de 5 entre 2.5.
Hay que tener en cuenta que en PHP un entero no puede ser arbitrariamente grande. A partir de cierto valor, que depende del sistema operativo, PHP convierte automáticamente los enteros en float, perdiéndose precisión. En un sistema de 32 bits, el valor máximo es 2147483647 (231-1).
Si se necesita trabajar con enteros mayores, es necesario utilizar las funciones bcmath.

Operadores de incremento y decremento

EjemploNombreEfecto
++$aPre-incrementoIncrementa $a en uno, y luego devuelve $a.
$a++Post-incrementoDevuelve $a, y luego incrementa $a en uno.
--$aPre-decrementoDecrementa $a en uno, luego devuelve $a.
$a--Post-decrementoDevuelve $a, luego decrementa $a en uno.

La diferencia entre el pre-incremento y el post-incremento es que en el primer caso primero se incrementa la variable y después se utiliza y en el segundo primero se utiliza y después se incrementa.
<?php
$valor = 9;
print "<p>" . ++$valor . "</p>\n";
?>
<p>10</p>
<?php
$valor = 9;
print "<p>" . $valor++ . "</p>\n";
?>
<p>9</p>

El operador de incremento funciona también con caracteres, teniendo en cuenta que al incrementar el carácter 'z' se obtiene la cadena 'aa'. El operador de decremento no funciona con caracteres.
<?php
$valor = "b";
print "<p>" . ++$valor . "</p>\n";
?>
<p>c</p>
<?php
$valor = "z";
print "<p>" . ++$valor . "</p>\n";
?>
<p>aa</p>
<?php
$valor = "a9z";
print "<p>" . ++$valor . "</p>\n";
?>
<p>b0a</p>

Resto de una división

El operador % calcula el resto de una división entera
<?php
print "<p>El resto de 17 dividido entre 3 es " . 17 % 3 . "</p>\n";
?>
<p>El resto de 17 dividido entre 3 es 2</p>

La función fmod calcula el resto de una división con números decimales
<?php
print "<p>El resto de 17 dividido entre 3.1 es " . fmod(17, 3.1) . "</p>\n";
?>
<p>El resto de 17 dividido entre 3.1 es 1.5</p>
Hay que tener en cuenta que en PHP un entero no puede ser arbitrariamente grande. A partir de cierto valor, que depende del sistema operativo, PHP convierte automáticamente los enteros en float, perdiéndose precisión. En un sistema de 32 bits, el valor máximo es 2147483647 (231-1).
Si se necesita trabajar con enteros mayores, es necesario utilizar las funciones bcmath.

Paréntesis

Los operadores aritméticos tienen el mismo orden de precedencia que en Matemáticas. Concretamente, el orden de precedencia de los operadores comentados anteriormente es, de mayor a menor, el siguiente (los operadores indicados en el mismo grupo se efectúan en el orden en que aparecen en la expresión):
  • ++ (incremento) -- (decremento)
  • * (multiplicación) / (división) % (resto)
  • + (suma) - (resta)
Los paréntesis permiten agrupar operaciones de manera que las operaciones entre paréntesis se realicen antes que las operaciones fuera de los paréntesis. Se aconseja no utilizar paréntesis cuando las operaciones den el mismo resultado con o sin paréntesis.

Operadores combinados

Los operadores combinados permiten simplificar algunas expresiones de asignación:
EjemploNombreEquivale a
$a += $bSuma$a = $a + $b
$a -= $bResta$a = $a - $b
$a *= $bMultiplicación$a = $a * $b
$a /= $bDivisión$a = $a / $b
$a %= $bMódulo$a = $a % $b

Redondear un número

La función round(x) redondea el número x al entero más próximo.
<?php
print "<p>2.6 se redondea con round() a " . round(2.6) . "</p>\n";
print "<p>2.3 se redondea con round() a " . round(2.3) . "</p>\n";
print "<p>-2.6 se redondea con round() a " . round(-2.6) . "</p>\n";
print "<p>-2.3 se redondea con round() a " . round(-2.3) . "</p>\n";
?>
<p>2.6 se redondea con round() a 3</p>
<p>2.3 se redondea con round() a 2</p>
<p>-2.6 se redondea con round() a -3</p>
<p>-2.3 se redondea con round() a -2</p>
La función round() se puede utilizar para verificar si un número es un número entero (positivo o negativo), comprobando si un número coincide con su valor redondeado.
<?php
$numero = 4.3;
if ($numero == round($numero)) {
    print "<p>$numero es un número entero</p>\n";
} else {
    print "<p>$numero no es un número entero</p>\n";
}

$numero = -6;
if ($numero == round($numero)) {
    print "<p>$numero es un número entero</p>\n";
} else {
    print "<p>$numero no es un número entero</p>\n";
}
?>
<p>4.3 no es un número entero</p>
<p>-6 es un número entero</p>

La función round(x,n) redondea x con n decimales (si n es negativo redondea a decenas, centenas, etc.).
<?php
print "<p>2.6574 se redondea con round() con dos decimales a " . round(2.6574, 2) . "</p>\n";
print "<p>3141592 redondeado con round() con centenas es " . round(3141592, -2) . "</p>\n";
?>
<p>2.6574 se redondea con round() con dos decimales a 2.66</p>
<p>3141592 redondeado con round() con centenas es 3141600</p>

La función floor(x) redondea el número x al entero inferior (es decir, devuelve la parte entera).
<?php
print "<p>2.6 se redondea con floor() a " . floor(2.6) . "</p>\n";
print "<p>2.3 se redondea con floor() a " . floor(2.3) . "</p>\n";
print "<p>-2.6 se redondea con floor() a " . floor(-2.6) . "</p>\n";
print "<p>-2.3 se redondea con floor() a " . floor(-2.3) . "</p>\n";
?>
<p>2.6 se redondea con floor() a 2</p>
<p>2.3 se redondea con floor() a 2</p>
<p>-2.6 se redondea con floor() a -3</p>
<p>-2.3 se redondea con floor() a -3</p>

La función ceil(x) redondea el número x al entero superior.
<?php
print "<p>2.6 se redondea con ceil() a " . ceil(2.6) . "</p>\n";
print "<p>2.3 se redondea con ceil() a " . ceil(2.3) . "</p>\n";
print "<p>-2.6 se redondea con ceil() a " . ceil(-2.6) . "</p>\n";
print "<p>-2.3 se redondea con ceil() a " . ceil(-2.3) . "</p>\n";
?>
<p>2.6 se redondea con ceil() a 3</p>
<p>2.3 se redondea con ceil() a 3</p>
<p>-2.6 se redondea con ceil() a -2</p>
<p>-2.3 se redondea con ceil() a -2</p>

Potencias

La función pow(x, y) calcula x elevado a y.
En PHP 5.6 (publicado en agosto de 2014), se introdujo el operador **, equivalente a la función pow(). [referencia]
<?php
print "<p>2<sup>3</sup> = " . pow(2, 3) . "</p>\n";
?>
<p>2 = 8</p>
<?php
print "<p>2<sup>3</sup> = " . 2 ** 3 . "</p>\n";
?>
<p>2 = 8</p>

No hay comentarios:

Publicar un comentario