Transformer un nombre en lettres et en français
Bonjour à tous,
Quelqu'un connaît-il un moyen de transformer un nombre, dans son équivalent en lettres, et en français.
Pour les nombres supérieurs à 0, aller jusqu'au milliard devrait suffire. Au-delà, on peut toujours dire Milliards de milliards, voire milliards de milliards de milliards.
Et au-delà, il reste l'écriture scientifique (exemple : Dix Puissance Cent-Vingt-Huit).
Mais une fonction qui se limiterait au milliard devrait me suffire.
Pour les nombres inférieurs à 0, il y a des choix à faire. On peut dire "Zéro virgule", puis énoncer chaque chiffre.
Exemple : 3,141593 pourrait devenir "Trois virgule Un Quatre Un Cinq Neuf Trois".
Mais on peut aussi regrouper les nombres par deux ou par trois. Ça donnerait "Trois virgule quatorze, quinze, quatre-vingt treize" ou bien "Trois virgule Centre Quarante-et-Un, Cinq Cent Quatre-Vingt-Treize".
Au final, c'est une fonction qui peut servir mais qui me semble assez longue à définir.
Merci d'avance
Transformer un nombre en lettres
Bonjour,
Vous précisez "en français" donc je suppose que vous avez vu des packages faisant la transformation en anglais.
Le package xfun fonctionne sur les nombres entiers et décimaux :
Code:
1 2 3 4 5 6
| > xfun::numbers_to_words(1001001001001)
[1] "one trillion, one billion, one million, one thousand, one"
> xfun::numbers_to_words(1e+15 - 1)
[1] "nine hundred ninety-nine trillion, nine hundred ninety-nine billion, nine hundred ninety-nine million, nine hundred ninety-nine thousand, nine hundred ninety-nine"
> xfun::numbers_to_words(3.141593)
[1] "three point one four one five nine three" |
Je pense que le plus simple serait d'adapter cette fonction au français.
N.B. : Dans l'autre sens, le package numberize gère l'anglais, le français et l'espagnol mais fonctionne uniquement sur les nombres entiers :
Code:
1 2 3 4 5 6 7 8 9
| > numberize::numberize("one trillion, one billion, one million,one thousand, one", lang = "en")
[1] 1001001001001
> numberize::numberize("un billion un milliard un million mille un", lang = "fr")
[1] 1001001001001
> numberize::numberize("three point one four one five nine three", lang = "en")
[1] NA
Message d'avis :
Dans digits_from(text, lang) :
[three point one four one five nine three] can be interpreted in different ways. |
Cordialement,