Questa funzione JavaScript converte i numeri in cifre in lettere scritte per esteso (come sugli assegni).
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;
  }
}
va richiamato con:

JavaScript

var r = sgart.convNumLett(2012, false, true);
Tags:
Calcolatori37 HTML74 JavaScript184 Utility59
Potrebbe interessarti anche: