Redondear valores numéricos.

Resumen.

Como ya hemos dicho en otras ocasiones, las operaciones matemáticas son algo muy recurrente en cualquier lenguaje de programación, y como sabemos, muchas veces nos aparecen los valores decimales. Los valores decimales son necesarios para tener precisión en los cálculos, pero presentar el importe de una factura con 12 decimales, resulta un tanto absurdo. Este artículo lo vamos a dedicar a eso y como presentar finalmente los datos resultantes de las operaciones que realizamos.

Artículo.

Las operaciones matemáticas están presentes en muchísimas aplicaciones de nuestros sitios Web, una de las mas frecuentes es el carrito de la compra, donde no solo tenemos que realizar operaciones matemáticas, además tenemos que presentarlas de una forma coherente para el usuario.

Cuando decimos “presentar de forma coherente para el usuario” nos referimos a que vamos a realizar algún tipo de cambio en los valores del carrito de la compra para que el resultado no sea, digamos, apabullante. Tengamos presente que PHP representa los valores numéricos como una cadena continua de dígitos donde se separan los decimales con un punto “.”. A nadie le resulta atractivo ver algo como esto en nuestro carrito de la compra:
Importe total: 1587.2564891435 €
Seria más lógico devolver algo así como:
Importe total: 1587.26 €
O incluso mejor así:
Importe total: 1.587,26 €
Para realizar la función de redondeo lo primero que debemos es tener un valor numérico con decimales al que le aplicaremos cualquiera de las siguientes funciones según nuestras necesidades.

round().- Probablemente esta sea la función mas usada y redondea al valor mas próximo, recibirá necesariamente un parámetro, el valor numérico a redondear y como opción, podrá recibir un segundo parámetro que indicará el número de decimales a presentar.
<?php $total_factura 1587.2564891435; $redondeo1 round($total_factura);     // Devolverá 1587 $redondeo2 round($total_factura2);     // Devolverá 1587.26 echo "$redondeo1 €<br /> $redondeo2 €"; ?>
floor().- Esta función redondea al valor inmediatamente mas bajo.
<?php $total_factura 1587.2564891435; $redondeo floor($total_factura);     // Devolverá 1587 echo "$redondeo € ?>
ceil().- Con esta función redondeamos al valor inmediatamente superior.
<?php $total_factura 1587.2564891435; $redondeo ceil($total_factura);     // Devolverá 1588 echo "$redondeo € ?>
number_format().- Esta función recibe 4 parámetros, el valor a redondear, el número de decimales, el separador de decimales y el separador de miles.
<?php $total_factura 1587.2564891435; $redondeo number_format($numero,2,',','.');     // Devolverá 1.587,26  echo "$redondeo"; ?>
Esta función es perfecta por ejemplo para presentar el importe de una factura.

Presentadas estas 4 funciones no podemos dejar de mencionar algo muy importante, y es sobre cuando hacer el redondeo. El redondeo, salvo tengamos un motivo para ello, siempre lo haremos a la hora de presentar el dato en cuestión, no lo realizaremos en operaciones intermedias, ya que de esta forma perderíamos precisión. En las bases de datos, por tanto, no guardaremos datos redondeados, efectuaremos el redondeo de cara a presentarlos en pantalla.
Tags: Redondea || números || round || floor || ceil || number_format

Comentarios.

Sin comentarios, publica el tuyo.