12 de junio de 2026
¿Cómo formato un monto en pesos argentinos (ARS) correctamente para mostrar al usuario?
En Argentina el separador decimal es la coma y el separador de miles es el punto: $1.234.567,89 es el formato estándar. En JavaScript: new Intl.NumberFormat('es-AR', { style: 'currency', currency: 'ARS' }).format(monto) genera el formato correcto automáticamente.
Implementaciones verificadas
// JavaScript — Intl estándar ECMAScript
const formatter = new Intl.NumberFormat('es-AR', {
style: 'currency',
currency: 'ARS',
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
formatter.format(1234567.89);
// → "$\u00a01.234.567,89"
// Sin símbolo (para campos de input)
new Intl.NumberFormat('es-AR', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(1234567.89);
// → "1.234.567,89"# Python — babel
from babel.numbers import format_currency
format_currency(1234567.89, 'ARS', locale='es_AR')
# → '$\xa01.234.567,89'Gotchas críticos
Al parsear input del usuario: si el usuario ingresa 1.234,56, no podés pasarlo directo a parseFloat() (devuelve 1.234, trunca los decimales). Hay que normalizar primero: reemplazar . por ` y , por .` antes de parsear.
Para WSFE/ARCA: el XML espera montos con punto decimal y sin separador de miles — 1234567.89. El formato display y el formato API son opuestos. Siempre convertí antes de enviar a ARCA.