with solo round porcentaje numero number_format mostrar money_format formato floatval decimals decimales php formatting currency

solo - number_format php



Imprimir formato de nĂºmero de moneda en PHP (5)

Construí esta pequeña función para formatear automáticamente cualquier cosa en un buen formato de moneda.

function formatDollars($dollars) { return "$".number_format(sprintf(''%0.2f'', preg_replace("/[^0-9.]/", "", $dollars)),2); }

Editar

Se señaló que esto no muestra valores negativos. Lo dividí en dos líneas para que sea más fácil editar el formato. Envuélvalo entre paréntesis si es un valor negativo:

function formatDollars($dollars) { $formatted = "$" . number_format(sprintf(''%0.2f'', preg_replace("/[^0-9.]/", "", $dollars)), 2); return $dollars < 0 ? "({$formatted})" : "{$formatted}"; }

Tengo algunos valores de precio para mostrar en mi página.

Estoy escribiendo una función que toma el precio de flotación y devuelve el valor de moneda formateado con el código de moneda también.

Por ejemplo, fnPrice(1001.01) debería imprimir $ 1,000.01


La respuesta más fácil es number_format() .

echo "$ ".number_format($value, 2);

Si desea que su aplicación pueda trabajar con varias monedas y con formato compatible con la configuración regional ( 1.000,00 para algunos de nosotros, los europeos, por ejemplo), se vuelve un poco más complejo.

Hay money_format() pero no funciona en Windows y se basa en setlocale() , que es basura en mi opinión, porque requiere la instalación de paquetes de configuración regional (denominados arbitrariamente) en el lado del servidor.

Si desea internacionalizar seriamente su aplicación, considere utilizar una biblioteca de internacionalización en toda regla, como Zend_Locale y Zend_Currency Zend Framework.


PHP tiene una función llamada money_format para hacer esto. Lea sobre esto here .


con la extensión intl en PHP 5.3+, puede usar la clase NumberFormatter :

$amount = ''12345.67''; $formatter = new NumberFormatter(''en_GB'', NumberFormatter::CURRENCY); echo ''UK: '', $formatter->formatCurrency($amount, ''EUR''), PHP_EOL; $formatter = new NumberFormatter(''de_DE'', NumberFormatter::CURRENCY); echo ''DE: '', $formatter->formatCurrency($amount, ''EUR''), PHP_EOL;

que imprime:

UK: €12,345.67 DE: 12.345,67 €