Convertire i numeri da cifre a lettere
Questa funzione JavaScript converte i numeri in cifre in lettere scritte per esteso (come sugli assegni).
Il codice è il seguente:
va richiamato con:
E' disponibile una nuova versione che supporta più moltiplicatori, quali: Mila, Milioni, Miliardi, Bilioni, Biliardi, Trilioni, Triliardi, Quadrilioni e Quadriliardi.
Ad esempio 2234 diventa DueMilaDueCentoTrentaQuattro. =
Il codice è il seguente:
JavaScript
var sgart = sgart || {};
sgart.convNumLett= function (n, abbr, separator) {
if(isNaN(n) == true){
return "!!! Inserisci un numero valido !!!";
}
if(n.indexOf('.') >=0 || n.indexOf(',') >=0){
return "!!! Solo numeri interi !!!";
}
if(n == 0){
return "ZERO";
}
var numero = n.replace(/^\s+|\s+$/g,"");
if(numero.length > 12){
return "!!! Numero troppo grande !!!";
}
var lettu = ["","Uno","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove"];
var lettu1 = ["Dieci","Undici","Dodici","Tredici","Quattordici","Quindici","Sedici","Diciassette","Diciotto","Diciannove"];
var lettd = ["","Dieci","Venti","Trenta","Quaranta","Cinquanta","Sessanta","Settanta","Ottanta","Novanta"];
var prefs = ["","UnMila","UnMilione","UnMiliardo"];
var prefp = ["","Mila","Milioni","Miliardi"];
var numeroCifre=0;
if(abbr===true){
if(numero.length<=2){
numeroCifre = numero;
}else{
numeroCifre = numero.substring(numero.length-2);
numero = numero.substring(0, numero.length-2) + "00";
}
}
var lmax = numero.length;
//indica se centinaia=2, decine=1 o unita=0
var cdu = parseInt((lmax-1) % 3);
//indica il moltiplicatore
var molt = parseInt((lmax-1) / 3);
if(molt > 3){
molt = parseInt(molt % 4);
}
var risultato = ""; //contiene il numero in lettere
var strSep = separator===true ? " " : "";
var i = 0; //contatore all'interno del numero
while(i < lmax){
var ris_par = "";
var cent_dec = 0; //se=1, indica se nelle centinaia o nelle decine c'era una cifra <> da 0
var decine = 0; //se=1, indica che nelle decine c'era un 1
if(i < lmax-3 && molt < 1){
molt = 3;
}
var car = parseInt(numero.charAt(i));
// centinaia
if( cdu == 2 ){
if (car > 0){
if( car != 1){
ris_par = lettu[car] + strSep + "Cento";
}else{
ris_par = "Cento";
}
cent_dec = 1;
}
i++;
}
// decine
car = parseInt(numero.charAt(i));
if( cdu >= 1) {
if( car == 1){
decine = 1;
} else if(car > 1){
ris_par = ris_par + strSep + lettd[car];
cent_dec = 2;
}
i++;
}
// unita
car = parseInt(numero.charAt(i));
if( cdu >= 0) {
if( decine == 1){
//scrive numero da 10 a 19
ris_par = ris_par + strSep + lettu1[car];
cent_dec = 1;
}else {
// scrive gli altri numeri 0 a 9
if ((car == 1 || car == 8) && cent_dec == 2){
ris_par = ris_par.substring(0, ris_par.length-1);
}
if ((car == 1 && cent_dec > 0) || car > 1 || molt == 0 ){
ris_par = ris_par + strSep + lettu[car];
}
}
if (decine == 1 || cent_dec > 0 || car != 0 || molt == 3){
if (cent_dec == 0 && car == 1){
ris_par = ris_par + strSep + prefs[molt];
}else{
ris_par = ris_par + strSep + prefp[molt];
}
}
if ((ris_par == "UnMila" || ris_par == "Mila") && i == 0 ){
ris_par = "Mille";
}
ris_par += strSep;
i++;
molt--;
cdu = 2;
risultato = risultato + ris_par;
}
}
if(abbr===true){
if(numero.length<=2){
return numeroCifre;
}else{
return risultato + "/" + numeroCifre;
}
} else {
return risultato;
}
}
JavaScript
var r = sgart.convNumLett(2012, false, true);