Maison > interface Web > js tutoriel > Comment puis-je convertir efficacement des nombres en mots dans le système Lakhs/Crores ?

Comment puis-je convertir efficacement des nombres en mots dans le système Lakhs/Crores ?

Susan Sarandon
Libérer: 2024-11-07 19:22:02
original
616 Les gens l'ont consulté

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

Transformer des nombres en mots dans un système Lakhs / Crores : une approche efficace

La conversion de nombres en mots est une tâche courante en programmation, en particulier dans applications financières ou comptables. Alors que de nombreuses solutions existantes impliquent un code complexe avec plusieurs expressions régulières et boucles, cet article présente une approche simplifiée adaptée aux exigences spécifiques du système de numérotation sud-asiatique.

Ce système utilise les concepts de « lakhs » et de « crores " pour représenter de grands nombres. Un lakh représente 100 000, tandis qu'un crore représente 10 000 000. Contrairement au système de numérotation occidental où les virgules sont utilisées comme séparateurs, le système sud-asiatique utilise des espaces.

Pour réaliser cette transformation efficacement, l'extrait de code suivant utilise une seule expression régulière et élimine le besoin de boucles :

<code class="javascript">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:
</code>
Copier après la connexion

document.getElementById('number').onkeyup = function () {

document.getElementById('words').innerHTML = inWords(document.getElementById('number').value);
Copier après la connexion

};


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal