2008-11-17 13 views
45

¿Cómo se convierte un número en una cadena que muestra dólares y centavos?¿Cómo puedo formatear un número en dólares en PHP

eg: 
123.45 => '$123.45' 
123.456 => '$123.46' 
123  => '$123.00' 
.13  => '$0.13' 
.1  => '$0.10' 
0   => '$0.00' 
+0

¿Tiene un lenguaje de programación específico en mente? –

+0

Supongo que debería ser específico, lo cambiaré ahora. – nickf

+0

Tenga cuidado con el redondeo implícito introducido formateando el punto flotante en un cierto dígito. Si hay dos elementos con $ 0.015, puede tener situaciones donde 2 + 2 = 3. También tenga en cuenta que el punto flotante no contiene valores simples como 0.1 con precisión. –

Respuesta

61

PHP también tiene money_format().

He aquí un ejemplo:

echo money_format('$%i', 3.4); // echos '$3.40' 

Esta función en realidad tiene un montón de opciones, ir a la documentación que he vinculado a verlos.

Nota: money_format no está definido en Windows.

+10

Del doco: Nota: La función money_format() solo se define si el sistema tiene capacidades de strfmon. Por ejemplo, Windows no, por lo que money_format() no está definido en Windows. –

+0

Gracias, maneja diferentes formatos de entrada, muy útil. –

+1

Me gusta más este enfoque en teoría, pero ¿por qué el resultado de la mina es ** $ USD 3,40 **? ¿Sabrías qué parámetros puedo cambiar para obtener el resultado anterior (sin el "USD")? Obviamente, preferiría hacer esto sin str_replace o expresiones regulares. – MCybertron

6

En PHP y C++ se puede utilizar la función printf()

printf("$%01.2f", $money); 
+0

Las funciones PHP integradas son realmente útiles. –

0

en C# usar el formato de moneda especificador: C

string.Format ("{0: C}", someValue);

+0

heh - acabo de cambiar la pregunta para que sea específica de PHP, pero gracias por la respuesta de todos modos. – nickf

64

Si lo que desea es algo sencillo:

'$' . number_format($money, 2); 

number_format()

+3

tenga en cuenta que esto agregará una coma (o el equivalente en su localidad) después de cada agrupación de tres dígitos. esto podría ser deseado, pero podría ser muy confuso si no lo esperabas. – nickf

+10

Para hacerlo sin miles de separadores: ''$'. number_format ($ money, 2, '.', ''); ' –

+0

Esto no funciona para números negativos, usamos - $ 69.42 not $ -69.42 – Cano64

7

Traté money_format() pero no funcionó para mí en absoluto. entonces intenté el siguiente. funcionó perfecto para mí. es de esperar que va a funcionar en forma correcta para que también .. :)

se debe utilizar éste

number_format($money, 2,'.', ',') 

se mostrará el número de dinero en términos de formato dinero hasta 2 decimales.

Cuestiones relacionadas