"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo convertir eficientemente números en palabras en el sistema Lakhs/Crores?

¿Cómo puedo convertir eficientemente números en palabras en el sistema Lakhs/Crores?

Publicado el 2024-11-10
Navegar:149

How Can I Efficiently Convert Numbers to Words in the Lakhs/Crores System?

Transformación de números en palabras en un sistema de Lakhs / Crores: un enfoque eficiente

Convertir números en palabras es una tarea común en programación, particularmente en aplicaciones financieras o contables. Si bien muchas soluciones existentes implican código complejo con múltiples expresiones regulares y bucles, este artículo presenta un enfoque simplificado adaptado a los requisitos específicos del sistema de numeración del sur de Asia.

Este sistema utiliza los conceptos de "lakhs" y "crores". " para representar grandes números. Un lakh representa 100.000, mientras que un crore representa 10.000.000. A diferencia del sistema de numeración occidental, donde se utilizan comas como separadores, el sistema del sur de Asia utiliza espacios.

Para lograr esta transformación de manera eficiente, el siguiente fragmento de código emplea una única expresión regular y elimina la necesidad de bucles:

const a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
const b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];

function inWords (num) {
  if ((num = num.toString()).length > 9) return 'overflow';
  n = ('000000000'   num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/);
  if (!n) return;
  let str = '';
  str  = (n[1] != 0) ? (a[Number(n[1])] || b[n[1][0]]   ' '   a[n[1][1]])   'crore ' : '';
  str  = (n[2] != 0) ? (a[Number(n[2])] || b[n[2][0]]   ' '   a[n[2][1]])   'lakh ' : '';
  str  = (n[3] != 0) ? (a[Number(n[3])] || b[n[3][0]]   ' '   a[n[3][1]])   'thousand ' : '';
  str  = (n[4] != 0) ? (a[Number(n[4])] || b[n[4][0]]   ' '   a[n[4][1]])   'hundred ' : '';
  str  = (n[5] != 0) ? ((str != '') ? 'and ' : '')   (a[Number(n[5])] || b[n[5][0]]   ' '   a[n[5][1]])   'only ' : '';
  return str;
}
````

This code combines pre-defined arrays 'a' and 'b' to form various numerical representations. By utilizing a regular expression, it captures the different sections of the number (e.g., crores, lakhs, thousands, hundreds, and ones) and generates the appropriate words. Importantly, this approach is much more concise than the earlier solution presented.

To demonstrate the code's functionality, an HTML/JavaScript snippet can be used:

document.getElementById('número').onkeyup = function () {

document.getElementById('words').innerHTML = inWords(document.getElementById('number').value);

};


Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3