Mostrar número a dos decimales [Ejemplo Completo]
Mostrar número a dos decimales. En este artículo veremos varios ejemplos para poder manejar decimales en números enteros dentro del lenguaje PHP. Todo programador se tiene que liar con decimales cuando estamos desarrollando un sistema de comercio electrónico, Inventarios de productos, etc.
¿Cuál es la forma correcta de redondear un variable PHP a dos decimales?
Existe varias formas de poder hacerlo y depende de nuestra necesidad, por ejemplo, para manejar precio se suele usar la función PHP NUMBER_FORMAT.
Si deseamos redondear los números podemos usar la función ROUND del PHP
Mostrar número a dos decimales: Quitar decimales
Utilice round() (utilízalo si esperas un número solo en formato float, de lo contrario usa number_format()
a) Ejemplo #1 round()
<?php echo round(3.4); // 3 echo round(3.5); // 4 echo round(3.6); // 4 echo round(3.6, 0); // 4 echo round(1.95583, 2); // 1.96 echo round(1241757, -3); // 1242000 echo round(5.045, 2); // 5.05 echo round(5.055, 2); // 5.06 ?>
b) Ejemplo #2 round()
<?php echo round(9.5, 0, PHP_ROUND_HALF_UP); // 10 echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9 echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10 echo round(9.5, 0, PHP_ROUND_HALF_ODD); // 9 echo round(8.5, 0, PHP_ROUND_HALF_UP); // 9 echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8 echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8 echo round(8.5, 0, PHP_ROUND_HALF_ODD); // 9 ?>
c) Ejemplo #3 round()
echo round(5.045, 2); // 5.05 echo round(5.055, 2); // 5.06
FUNCION NUMBER_FORMAT
number_format — Formatear un número con los millares agrupados
En este ejemplo usaremos la función de PHP number_format() para formatear números. Sin embargo, esta función recibe uno, dos o cuatro parámetros. Por lo tanto, tenemos estas restricciones.
- Hay un único parámetro requerido (el número que deseamos formatear).
- El segundo parámetro es opcional, tal como lo es el tercero y el cuarto parámetro.
- Si declaramos el tercer parámetro, estamos obligados a especificar también el cuarto parámetro.
Veamos con ejemplos los parámetros de la función de formateo de números de PHP, con varios ejemplos.
Puedes probar con echo number_format($total, 2, ‘,’, ‘.’);
Explicación:
- 2 Indica el número de decimales a mostrar
- ‘,’ Indica el separador que se va a usar para el separador de los decimales
- ‘.’ Indica el separador que se va a usar para el separador de los miles
a) Ejemplo 01
$numero= "105"; echo number_format((float)$numero, 2, '.', '');
// Salida en navegador -> 105.00
Esta función devuelve una cadena.
b) Ejemplo 02
$number = 1234545454; echo $english_format_number = number_format($number, 2);
La salida será:
1,234,545,454.00
c) Ejemplo 03
<?php $num = 1999.9; $formattedNum = number_format($num)."<br>"; echo $formattedNum; $formattedNum = number_format($num, 2); echo $formattedNum; ?>
La salida será lo siguiente:
2,000 1,999.90
SPRINTF o PRINTF:
Puede utilizar las funciones PHP, printf o sprintf:
a) Ejemplo con sprintf
:
Reemplazar el porcentaje (%) signo por una variable pasada como argumento:
$num = 2.12; echo sprintf("%.3f", $num);
Salida:
2.120
b) Usando con printf:
printf nos permite usar caracteres especiales en un string denominados especificadores. Para cada carácter formateado dentro del string, printf espera que pasemos el argumento que se va a mostrar.
echo printf("%.2f", $num);
La salida sera:
2.124
Función nativa PHP bcdiv
bcdiv — Divide dos números de precisión arbitraria.
echo bcdiv(2.56789, 1, 1); // 2.5 echo bcdiv(2.56789, 1, 2); // 2.56 echo bcdiv(2.56789, 1, 3); // 2.567 echo bcdiv(-2.56789, 1, 1); // -2.5 echo bcdiv(-2.56789, 1, 2); // -2.56 echo bcdiv(-2.56789, 1, 3); // -2.567
CONCLUSIÓN
Como hemos podido apreciar, para formatear números a moneda o decimales podemos usar varias funciones nativas del lenguaje para lograr nuestro propósito.
La implementación es muy sencilla y lo hemos explicado en ejemplos con números enteros.
Espero que esta breve explicación les ayude en sus proyectos web.