(PHP 4, PHP 5, PHP 7, PHP 8)
number_format — Formatea un número para su visualización
$num,$decimals = 0,$decimal_separator = ".",$thousands_separator = ","Formatea un número con los miles agrupados y opcionalmente con cifras decimales utilizando la regla de redondeo al más cercano.
numEl número a formatear.
decimals
Define el número de cifras decimales.
Si es 0, el decimal_separator es
omitido del valor de retorno.
A partir de PHP 8.3.0, cuando el valor es negativo, num
es redondeado a decimals cifras significativas antes
del punto decimal.
Antes de PHP 8.3.0, los valores negativos eran ignorados y tratados de la
misma manera que 0.
decimal_separatorDefine el separador para el punto decimal.
thousands_separatorDefine el separador de miles.
Una versión formateada del número num.
| Versión | Descripción |
|---|---|
| 8.3.0 |
Se añadió el manejo de valores negativos para decimals.
|
| 8.0.0 | Antes de esta versión, number_format() aceptaba uno, dos o cuatro argumentos (pero no tres). |
| 7.2.0 |
number_format() fue modificado para no permitir devolver -0, anteriormente -0 podía
ser devuelto para casos donde num valía -0.01.
|
Ejemplo #1 Un valor negativo para decimals
A partir de PHP 8.3.0, un valor negativo para decimals
es utilizado para redondear el número de cifras significativas antes del punto
decimal.
<?php
$number = "1234.5678";
var_dump(number_format($number, -1));
var_dump(number_format($number, -2));
var_dump(number_format($number, -3));
?>El ejemplo anterior mostrará :
string(5) "1 230" string(5) "1 200" string(5) "1 000"
Ejemplo #2 Ejemplo con number_format()
En notación francesa, se utilizan generalmente dos cifras después de la coma, una coma como separador decimal y un espacio como separador de miles. El siguiente ejemplo muestra cómo formatear un número de diferentes maneras:
<?php
$number = 1234.56;
// Notación inglesa (por omisión)
echo number_format($number), PHP_EOL;
// 1,235
// Notación francesa
echo number_format($number, 2, ',', ' '), PHP_EOL;
// 1 234,56
$number = 1234.5678;
// Notación inglesa sin separador de miles
echo number_format($number, 2, '.', ''), PHP_EOL;
// 1234.57
?>