Created
July 17, 2023 09:40
-
-
Save kouameYao/145a3d687ca02139e91d4f914aaca1eb to your computer and use it in GitHub Desktop.
Convert any given number into letter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function Unite(nombre) { | |
| var unite; | |
| switch (nombre) { | |
| case 0: | |
| unite = 'zéro'; | |
| break; | |
| case 1: | |
| unite = 'un'; | |
| break; | |
| case 2: | |
| unite = 'deux'; | |
| break; | |
| case 3: | |
| unite = 'trois'; | |
| break; | |
| case 4: | |
| unite = 'quatre'; | |
| break; | |
| case 5: | |
| unite = 'cinq'; | |
| break; | |
| case 6: | |
| unite = 'six'; | |
| break; | |
| case 7: | |
| unite = 'sept'; | |
| break; | |
| case 8: | |
| unite = 'huit'; | |
| break; | |
| case 9: | |
| unite = 'neuf'; | |
| break; | |
| } | |
| return unite; | |
| } | |
| function Dizaine(nombre) { | |
| switch (nombre) { | |
| case 10: | |
| dizaine = 'dix'; | |
| break; | |
| case 11: | |
| dizaine = 'onze'; | |
| break; | |
| case 12: | |
| dizaine = 'douze'; | |
| break; | |
| case 13: | |
| dizaine = 'treize'; | |
| break; | |
| case 14: | |
| dizaine = 'quatorze'; | |
| break; | |
| case 15: | |
| dizaine = 'quinze'; | |
| break; | |
| case 16: | |
| dizaine = 'seize'; | |
| break; | |
| case 17: | |
| dizaine = 'dix-sept'; | |
| break; | |
| case 18: | |
| dizaine = 'dix-huit'; | |
| break; | |
| case 19: | |
| dizaine = 'dix-neuf'; | |
| break; | |
| case 20: | |
| dizaine = 'vingt'; | |
| break; | |
| case 30: | |
| dizaine = 'trente'; | |
| break; | |
| case 40: | |
| dizaine = 'quarante'; | |
| break; | |
| case 50: | |
| dizaine = 'cinquante'; | |
| break; | |
| case 60: | |
| dizaine = 'soixante'; | |
| break; | |
| case 70: | |
| dizaine = 'soixante-dix'; | |
| break; | |
| case 80: | |
| dizaine = 'quatre-vingt'; | |
| break; | |
| case 90: | |
| dizaine = 'quatre-vingt-dix'; | |
| break; | |
| } | |
| return dizaine; | |
| } | |
| function NumberToLetter(nombre) { | |
| var i, j, n, quotient, reste, nb; | |
| var ch; | |
| var numberToLetter = ''; | |
| if (nombre.toString().replace(/ /gi, '').length > 15) return 'dépassement de capacité'; | |
| if (isNaN(nombre.toString().replace(/ /gi, ''))) return 'Nombre non valide'; | |
| nb = parseFloat(nombre.toString().replace(/ /gi, '')); | |
| if (Math.ceil(nb) != nb) return 'Nombre avec virgule non géré.'; | |
| n = nb.toString().length; | |
| switch (n) { | |
| case 1: | |
| numberToLetter = Unite(nb); | |
| break; | |
| case 2: | |
| if (nb > 19) { | |
| quotient = Math.floor(nb / 10); | |
| reste = nb % 10; | |
| if (nb < 71 || (nb > 79 && nb < 91)) { | |
| if (reste == 0) numberToLetter = Dizaine(quotient * 10); | |
| if (reste == 1) numberToLetter = Dizaine(quotient * 10) + '-et-' + Unite(reste); | |
| if (reste > 1) numberToLetter = Dizaine(quotient * 10) + '-' + Unite(reste); | |
| } else numberToLetter = Dizaine((quotient - 1) * 10) + '-' + Dizaine(10 + reste); | |
| } else numberToLetter = Dizaine(nb); | |
| break; | |
| case 3: | |
| quotient = Math.floor(nb / 100); | |
| reste = nb % 100; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'cent'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'cent' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = Unite(quotient) + ' cents'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = Unite(quotient) + ' cent ' + NumberToLetter(reste); | |
| break; | |
| case 4: | |
| quotient = Math.floor(nb / 1000); | |
| reste = nb - quotient * 1000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'mille'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'mille' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' mille'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' mille ' + NumberToLetter(reste); | |
| break; | |
| case 5: | |
| quotient = Math.floor(nb / 1000); | |
| reste = nb - quotient * 1000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'mille'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'mille' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' mille'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' mille ' + NumberToLetter(reste); | |
| break; | |
| case 6: | |
| quotient = Math.floor(nb / 1000); | |
| reste = nb - quotient * 1000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'mille'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'mille' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' mille'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' mille ' + NumberToLetter(reste); | |
| break; | |
| case 7: | |
| quotient = Math.floor(nb / 1000000); | |
| reste = nb % 1000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un million'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un million' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' millions'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' millions ' + NumberToLetter(reste); | |
| break; | |
| case 8: | |
| quotient = Math.floor(nb / 1000000); | |
| reste = nb % 1000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un million'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un million' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' millions'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' millions ' + NumberToLetter(reste); | |
| break; | |
| case 9: | |
| quotient = Math.floor(nb / 1000000); | |
| reste = nb % 1000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un million'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un million' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' millions'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' millions ' + NumberToLetter(reste); | |
| break; | |
| case 10: | |
| quotient = Math.floor(nb / 1000000000); | |
| reste = nb - quotient * 1000000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un milliard'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un milliard' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' milliards'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' milliards ' + NumberToLetter(reste); | |
| break; | |
| case 11: | |
| quotient = Math.floor(nb / 1000000000); | |
| reste = nb - quotient * 1000000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un milliard'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un milliard' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' milliards'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' milliards ' + NumberToLetter(reste); | |
| break; | |
| case 12: | |
| quotient = Math.floor(nb / 1000000000); | |
| reste = nb - quotient * 1000000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un milliard'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un milliard' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' milliards'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' milliards ' + NumberToLetter(reste); | |
| break; | |
| case 13: | |
| quotient = Math.floor(nb / 1000000000000); | |
| reste = nb - quotient * 1000000000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un billion'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un billion' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' billions'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' billions ' + NumberToLetter(reste); | |
| break; | |
| case 14: | |
| quotient = Math.floor(nb / 1000000000000); | |
| reste = nb - quotient * 1000000000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un billion'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un billion' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' billions'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' billions ' + NumberToLetter(reste); | |
| break; | |
| case 15: | |
| quotient = Math.floor(nb / 1000000000000); | |
| reste = nb - quotient * 1000000000000; | |
| if (quotient == 1 && reste == 0) numberToLetter = 'un billion'; | |
| if (quotient == 1 && reste != 0) numberToLetter = 'un billion' + ' ' + NumberToLetter(reste); | |
| if (quotient > 1 && reste == 0) numberToLetter = NumberToLetter(quotient) + ' billions'; | |
| if (quotient > 1 && reste != 0) | |
| numberToLetter = NumberToLetter(quotient) + ' billions ' + NumberToLetter(reste); | |
| break; | |
| } | |
| if ( | |
| numberToLetter.substr(numberToLetter.length - 'quatre-vingt'.length, 'quatre-vingt'.length) == | |
| 'quatre-vingt' | |
| ) | |
| numberToLetter = numberToLetter + 's'; | |
| return numberToLetter; | |
| } | |
| console.log(NumberToLetter(71)); | |
| console.log(NumberToLetter(1)); | |
| console.log(NumberToLetter(100)); | |
| console.log(NumberToLetter(94)); | |
| console.log(NumberToLetter(0)); | |
| console.log(NumberToLetter(1234567)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment