chiffretolettre
Version:
transforme chiffre en lettre en français
86 lines (83 loc) • 2.24 kB
JavaScript
function chiffreToLettre(nb) {
if(nb==0)return "zero"
let lettre = '';
if(nb<0){lettre="moin ";nb*=-1}
const nombres = [
'zero',
'un', // 1
'deux', // 2
'trois', // 3
'quatre', // 4
'cinq', // 5
'six', // 6
'sept', // 7
'huit', // 8
'neuf', // 9
'dix', // 10
'onze', // 11
'douze', // 12
'treize', // 13
'quatorze', // 14
'quinze', // 15
'seize', // 16
'dix-sept', // 17
'dix-huit', // 18
'dix-neuf', // 19
'vingt',
];
const dizaines = [
'zeroo',
'dix',
'vingt', // 20
'trente', // 30
'quarante', // 40
'cinquante', // 50
'soixante', // 60
'soixante-dix', // 70
'quatre-vingt', // 80
'quatre-vingt-dix', // 90
'cent', // 100
];
// billion
if (nb >= 1000000000000){
if (Math.floor(nb / 1000000000000) == 1) lettre += 'un billion ';
else lettre += chiffreToLettre(Math.floor(nb / 1000000000000)) + ' billions ';
nb=nb%1000000000
}
// miliard
if (nb >= 1000000000){
if (Math.floor(nb / 1000000000) == 1) lettre += 'un milliard ';
else lettre += chiffreToLettre(Math.floor(nb / 1000000000)) + ' milliards ';
nb=nb%1000000000
}
// milion
if (nb >= 1000000){
if (Math.floor(nb / 1000000) == 1) lettre += 'un million ';
else lettre += chiffreToLettre(Math.floor(nb / 1000000)) + ' millions ';
nb=nb%1000000
}
// miles
if (nb >= 1000){
if (Math.floor(nb / 1000) == 1) lettre += 'mille ';
else lettre += chiffreToLettre(Math.floor(nb / 1000)) + ' milles ';
nb=nb%1000
}
//cent
if (nb >= 100){
if (Math.floor(nb / 100) == 1) lettre += 'cent ';
else lettre += nombres[Math.floor(nb / 100)] + ' cents ';
nb=nb%100
}
//dizaine
if(Math.floor(nb/10)==7 && nb>70)lettre+=dizaines[6]+" "+(nb%60==11?"et ":"")+nombres[nb%60]
else if(Math.floor(nb/10)==9 && nb>90)lettre+=dizaines[8]+" "+(nb%80==11?"et ":"")+nombres[nb%80]
else if(nb<20 && nb>0)lettre+=nombres[nb]
else if(nb>=20 && nb>0){
lettre+=dizaines[Math.floor(nb/10)]+" "
nb=nb%10
if(nb==1)lettre+="et un"
if(nb>1)lettre+=nombres[nb]
}
return lettre
}
module.exports = chiffreToLettre;