En este post de programación en lenguaje C vamos a ver cómo formatear dinero o moneda, de tal forma que un número como 1234567.89 se convierta en $1,234,567.89 separando decimales y miles.
Básicamente vamos a formatear un número como pesos, moneda, currency o dinero en C.
Imprimir número como dinero en C
Lo único que vamos a usar es un modificador de formato, así que vamos a usar esto con printf
o snprintf
.
El modificador del que hablo es el '
, con este modificador vamos a formatear el dinero, aunque antes debemos configurar el locale con setlocale
.
Código de ejemplo
Es tan simple como lo siguiente:
#include <stdio.h>
#include <locale.h>
int main(void)
{
setlocale(LC_NUMERIC, "");
long double dinero = 1234567.89;
printf("$%'.2Lf\n", dinero);
return 0;
}
En la línea 6 configuramos el locale, después declaramos la cantidad en la línea 7 (esta puede venir de cualquier lugar).
La magia sucede en la línea 8 en donde se imprime un número y se formatea como dinero, con la siguiente salida:
Obviamente puedes imprimir más cadenas antes o después, y todo eso. También puedes usar la función snprintf
que formatea la cadena dentro de otra cadena así:
#include <stdio.h>
#include <locale.h>
#define MAXIMA_LONGITUD_CADENA 100
int main(void)
{
char cadena[MAXIMA_LONGITUD_CADENA] = "";
setlocale(LC_NUMERIC, "");
long double dinero = 1234567.89;
snprintf(cadena, MAXIMA_LONGITUD_CADENA, "$%'.2Lf", dinero);
printf("La cadena formateada es '%s'", cadena);
return 0;
}
La salida en ese caso sería: La cadena formateada es ‘$1,234,567.89’
Vídeo explicativo
Para terminar te dejo con más tutoriales de programación en C.