Herramienta gratuita para convertir números en texto en español con precisión normativa y uso técnico.
Soporta enteros, decimales, negativos y formatos monetarios; optimizada para integraciones y localización ISO lingüística estándar.
Convertidor técnico de números a texto en español para magnitudes eléctricas
Propósito funcional y casos de uso profesionales
Un convertidor de números a texto en español atiende múltiples necesidades técnicas: generación automática de documentos legales, facturación, presentación de cantidades en informes, síntesis de voz, pruebas unitarias en software de localización y accesibilidad para lectores de pantalla. En entornos empresariales y administrativos, la representación textual de cantidades evita ambigüedades y cumple requisitos legales y normativos.
Este artículo explica el algoritmo, reglas morfológicas, formatos monetarios, consideraciones de localización y buenas prácticas de implementación. También incluye tablas con valores habituales, fórmulas matemáticas en HTML, ejemplos desarrollados y referencias normativas y técnicas.
Especificaciones técnicas del algoritmo
El motor se basa en la descomposición en tripletas (grupos de tres dígitos), mapeo de cada tripleta a su forma verbal y ensamblado aplicando reglas morfosintácticas específicas del español.
Modelo matemático de descomposición
Fórmula general de descomposición:
Numero N = Σi=0k (ai × 103i)
Explicación de variables:
- ai: entero en [0,999] que representa la i-ésima tripleta (unidades, miles, millones, etc.).
- i: índice de tripleta, con i=0 para las unidades, i=1 para los miles, i=2 para los millones, etc.
- k: índice de la tripleta más significativa (N > 0 → k = floor(log10(N)/3)).
Valores típicos:
- Para N = 1 234 567 → a0 = 567, a1 = 234, a2 = 1, k = 2.
- Para N = 0 → a0 = 0, k = 0.
Secuencia de operaciones del algoritmo
- Normalización: limpiar separadores, detectar signo, detectar formato monetario y la localidad (es-ES, es-MX, etc.).
- Descomposición: calcular ai mediante división entera y módulo por 1000.
- Conversión de cada tripleta: aplicar reglas locales para centenas, decenas y unidades.
- Aplicación de sufijos de escala: mil, millón(es), billón(es), etc., con tratamiento de concordancia y de la partícula "de" cuando corresponde.
- Formación del literal final y tratamiento de decimales (coma/decimal, fracción en centésimas, etc.).
- Postprocesado: ajuste de "uno/un/una", unión de palabras compuestas (veintiuno), y puntuación final.
Reglas morfológicas y consideraciones lingüísticas
El español tiene particularidades importantes que afectan la conversión: uso de "un/una" antes de sustantivos, ausencia de "de" tras "mil", obligación de "de" tras "millón/millones" cuando introduce nombre de sustantivo cuantificado, y formas contractas o irregulares (cien vs ciento, veintiuno vs veintiún).
Reglas clave con ejemplos
- Antes de un sustantivo masculino: 21 → "veintiún libros". Si no hay sustantivo, puede usarse "veintiuno".
- "Cien" se usa exactamente para 100; "ciento" para 101–199. Ej.: 100 → "cien"; 153 → "ciento cincuenta y tres".
- "Mil" no lleva plural ni artículo numeral: 1000 → "mil"; 2000 → "dos mil". No se dice "dos miles".
- "Millón" y "millones" sí admiten plural y se conectan con "de" cuando preceden a un sustantivo: 1 000 000 → "un millón"; 2 000 000 → "dos millones"; 2 000 000 de euros → "dos millones de euros".
- Unidades compuestas en 21–29: se escriben junto (veintiuno) y en 31–99 con "y": 31 → "treinta y uno".
Formatos de salida y localización
El convertidor debe soportar variantes regionales y formatos de salida:
- Uso de coma (,) o punto (.) como separador decimal según localización; sin embargo, en la verbalización se prefiere "coma" o "con" según aceptación local (p. ej., "uno coma cinco" vs "uno con cinco").
- Formas monetarias con ISO 4217: transformar 1234.56 EUR como "mil doscientos treinta y cuatro euros con cincuenta y seis céntimos", o "con 56/100" según formato requerido.
- Opciones de género en sustantivos: "una" vs "un" cuando la cantidad modifica sustantivo femenino (p. ej., "una persona").
Estándares de internacionalización
- Unicode CLDR: usar reglas de segmentación y localización del cldr para formatos de números y pluralización. Referencia: https://cldr.unicode.org/
- ISO 4217 para moneda y formato de moneda: https://www.iso.org/iso-4217-currency-codes.html
- Recomendaciones ortográficas y gramaticales de la RAE: https://www.rae.es/ y la obra "Ortografía de la lengua española" (2010).
Tablas de referencia: unidades, decenas, centenas y escalas
| Valor | Texto |
|---|---|
| 0 | cero |
| 1 | uno |
| 2 | dos |
| 3 | tres |
| 4 | cuatro |
| 5 | cinco |
| 6 | seis |
| 7 | siete |
| 8 | ocho |
| 9 | nueve |
| 10 | diez |
| 11 | once |
| 12 | doce |
| 13 | trece |
| 14 | catorce |
| 15 | quince |
| 16 | dieciséis |
| 17 | diecisiete |
| 18 | dieciocho |
| 19 | diecinueve |
| 20 | veinte |
| 21 | veintiuno / veintiún* |
| 22 | veintidós |
| 23 | veintitrés |
| 24 | veinticuatro |
| 25 | veinticinco |
| 26 | veintiséis |
| 27 | veintisiete |
| 28 | veintiocho |
| 29 | veintinueve |
| 30 | treinta |
| 40 | cuarenta |
| 50 | cincuenta |
| 60 | sesenta |
| 70 | setenta |
| 80 | ochenta |
| 90 | noventa |
| 100 | cien |
| 101 | ciento uno |
| 200 | doscientos |
| 300 | trescientos |
| 400 | cuatrocientos |
| 500 | quinientos |
| 600 | seiscientos |
| 700 | setecientos |
| 800 | ochocientos |
| 900 | novecientos |
| 1 000 | mil |
| 1 000 000 | un millón |
| 2 000 000 | dos millones |
| 1 000 000 000 | mil millones / un millardo (variante) |
| 1 000 000 000 000 | un billón (escala numérica larga) |
| Formato monetario | Ejemplo numérico | Texto recomendado |
|---|---|---|
| Euros (es-ES) | 1 234,56 | mil doscientos treinta y cuatro euros con cincuenta y seis céntimos |
| Pesos (es-MX) | 20 001.05 | veinte mil un pesos con cinco centavos |
| Dólares (en-US localización ES) | 1000.00 | mil dólares con cero centavos |
| Formato fraccionario | 1234.56 | mil doscientos treinta y cuatro con 56/100 |
Fórmulas HTML y explicación detallada de variables con valores típicos
Fórmula para obtener tripletas a partir de N (N entero no negativo):
ai = floor( (N mod 103(i+1)) / 103i )
Variables y ejemplos:
- N: número original. Ej.: N = 1234567.
- i: índice de tripleta. Ej.: i = 0 → unidades; i = 1 → miles; i = 2 → millones.
- a0: floor((1234567 mod 103)/100) = 567.
- a1: floor((1234567 mod 106)/103) = 234.
- a2: floor((1234567 mod 109)/106) = 1.
Fórmula para el texto total aproximado (pseudocódigo matemático):
Texto(N) = JOIN( for i = k down to 0: ConvertTripleta(ai) + Escala(i) )
Donde ConvertTripleta(x) produce la representación de 0–999 aplicando reglas de centenas, decenas y unidades, y Escala(i) devuelve "", "mil", "millón/millones", etc., con las concordancias necesarias.
Casos especiales y reglas de normalización
- Si ai = 0, omitir esa escala completamente salvo que N = 0.
- Para a1 = 1 (miles), se expresa "mil", no "un mil".
- Para millones: si a2 = 1 → "un millón"; si >1 → "X millones". Añadir "de" antes de un sustantivo (p. ej., "millones de euros").
- En decimales monetarios: representar los céntimos con dos dígitos, redondeando según regla bancaria cuando corresponda.
- Para números negativos: anteponer "menos". Ej.: -45 → "menos cuarenta y cinco".
Ejemplos reales: desarrollo completo y solución detallada
Ejemplo 1: Convertir 1 234 567,89 (formato europeo) a texto en español (sin moneda)
Paso 1 — Normalización: N = 1234567, decimal D = 89.
Paso 2 — Descomposición en tripletas:
- a0 = 567 (unidades)
- a1 = 234 (miles)
- a2 = 1 (millones)
Paso 3 — Conversión de tripletas:
- a2 = 1 → "un millón"
- a1 = 234 → convertir 234: 200 → "doscientos"; 34 → "treinta y cuatro" → "doscientos treinta y cuatro" + " mil" → "doscientos treinta y cuatro mil"
- a0 = 567 → 500 → "quinientos"; 67 → "sesenta y siete" → "quinientos sesenta y siete"
Paso 4 — Ensamblado con reglas morfológicas:
Concatene desde el mayor índice: "un millón" + " " + "doscientos treinta y cuatro mil" + " " + "quinientos sesenta y siete".
Decisión de formato: usar fracción centésimas o expresión literal. Se opta por literal: 89 → "ochenta y nueve".
Resultado final (sin moneda):
un millón doscientos treinta y cuatro mil quinientos sesenta y siete con ochenta y nueve
Observaciones: si se requiere especificar "céntimos" o "centésimas", la frase puede ser "con ochenta y nueve centésimas" o "con 89/100" según el contexto normativo.
Ejemplo 2: Convertir -20 001,05 EUR a texto en español (formato monetario, loc. es-ES)
Paso 1 — Normalización: reconocer signo negativo → prefijo "menos". Separar parte entera N = 20001, decimal D = 05 (céntimos).
Paso 2 — Descomposición:
- a0 = 1
- a1 = 20
Paso 3 — Conversión de tripletas:
- a1 = 20 → "veinte" + " mil" → "veinte mil"
- a0 = 1 → "un" (antes de "euros" se usa "un euro")
Paso 4 — Concatenación y normas monetarias:
La construcción con moneda exige que "mil" no lleve "de", y "millones" llevarían "de". En este ejemplo no aplica "de".
Paso 5 — Formato final con céntimos:
Los céntimos 05 → "cinco céntimos".
Resultado final:
menos veinte mil un euros con cinco céntimos
Nota técnica: según variantes formales, para facturas se puede preferir "menos veinte mil un euros con 05/100" o "menos veinte mil uno euros y 05/100" si se prefiere la forma numérica de la fracción. Además, lingüísticamente algunos optan por "veinte mil un euros" o "veinte mil uno euros"; antes del sustantivo "euros" la forma correcta es "veinte mil un euros" (uso de "un" por delante de sustantivo masculino).
Ejemplo 3: Convertir 1000000 en texto y demostrar la partícula 'de'
Paso 1 — N = 1000000 → a2 = 1, resto en a1 y a0 = 0.
Paso 2 — "un millón" y, si se usa con sustantivo (ej.: habitantes), se aplica 'de':
"un millón de habitantes".
Observación normativa: la RAE recomienda el uso de la preposición "de" cuando "millón/millones" antecede a un sustantivo cuantificado. Referencia: RAE, Ortografía de la lengua española.
Consideraciones de precisión, redondeo y validación
- Redondeo: cuando se convierten decimales con más de dos dígitos para usos monetarios, aplique redondeo bancario (round half to even o round half away from zero según política) y documente la elección.
- Validación de entrada: verificar que la cadena numérica no contenga caracteres inválidos y que el tamaño del número esté dentro de los límites manejables por la implementación (por ejemplo, hasta 1018 o más con BigInt).
- Soporte de fracciones: ofrecer opción de salida en fracción (p. ej., 56/100) o en texto literal ("cincuenta y seis céntimos").
Buenas prácticas de implementación y rendimiento
- Precompilar mapas de palabras para unidades, decenas y centenas para minimizar concatenaciones dinámicas.
- Evitar recursión profunda: usar bucles iterativos sobre tripletas y ensamblado iterativo desde el triplete más significativo.
- Soportar BigInt o enteros arbitrariamente grandes para evitar pérdida de precisión en valores extensos.
- Proveer API con parámetros configurables: localización, estilo de decimales (coma/con/frac), inclusión o no de la palabra "de" tras millones, elección entre "centésimas" o "céntimos".
- Tests unitarios: casos límite (0, 1, 100, 101, 1000, 1000000, números negativos, decimales con ceros a la izquierda en la parte decimal).
Interoperabilidad y seguridad
Al exponer servicios que convierten números a texto, considere:
- Sanitizar entradas para evitar inyecciones vía parámetros (aunque el servicio solo manipule cadenas numéricas).
- Limitar tamaño de entrada para prevenir cargas excesivas en el servicio.
- Proveer encabezados y contenido i18n compatibles con clientes que consumen resultados para síntesis de voz o generación de PDF.
Referencias normativas y recursos de autoridad
- Real Academia Española (RAE) — Ortografía de la lengua española (2010). https://www.rae.es/
- Diccionario Panhispánico de Dudas — entradas relacionadas con numerales y concordancia. https://www.rae.es/dpd
- Unicode CLDR — reglas de localidad y pluralización. https://cldr.unicode.org/
- ISO 4217 — códigos y denominaciones de monedas. https://www.iso.org/iso-4217-currency-codes.html
- W3C Internationalization (i18n) — recomendaciones para localización y accesibilidad. https://www.w3.org/International/
Checklist de validación antes de desplegar
- Verificar coincidencia con guías ortográficas locales (RAE u organismos nacionales).
- Confirmar formato monetario y denominaciones de moneda (ISO 4217).
- Comprobar comportamiento en límites numéricos y en números negativos.
- Revisar concordancia de género y uso de "un/una" con sustantivos.
- Probar con motores TTS para confirmar pronunciación y pausas adecuadas.
Resumen técnico y recomendaciones de despliegue
Un convertidor gratuito y de calidad ha de combinar un motor numérico robusto, cumplimiento de reglas del español y flexibilidad de salida. Documente las opciones API, las reglas aplicadas y mantenga actualizada la referencia normativa para alinearse con cambios ortográficos o recomendaciones de organismos oficiales.
Para integraciones empresariales, ofrezca configuraciones predeterminadas por país (es-ES, es-MX, es-AR, etc.), soporte de ISO para monedas y pruebas automatizadas que cubran los casos señalados en este documento.