Logo JsDir.com [niente]
Bring Your Site To Life!!!
10 Settembre 2010 - 22:38:38 - 19 scripters on-line! - La tua posizione nel sito: StaffScripts/Script083/
BedInLecce
StaffScripts
Convertitore di numeri in testo (v. 1.2)

Autore: Gianni Data: 15/04/2003 Downloads: 2285 Voto: 437/5 Download P r o v a

Convertitore di numeri in testo (v. 1.2)


01/11/2003 - Chi non desiderasse l'interpretazione dei decimali, ma vorrebbe che un numero tipo "13.56" venisse convertito in "tredici e 56" potrà semplicemente sostituire la riga 59 con questa:
str2=((str1)?" e ":"")+num2;
dalla quale abbiamo tolto tutto lo script a destra del segno + e lasciato il numero "grezzo" in cifre contenuto nella variabile num2.

Volendo togliere " e " per sostituirla con una barra " / " sarà sufficiente agire sulla stessa riga modificando la stringa immediatamente a destra del primo " ? ".
Ad esempio usando per la riga 59 questa sintassi:
str2=((str1)?"/":"")+num2;
otterremo "145.94" convertito in "Centoquarantacinque/54" com'ìè uso fare, ad esempio, per la dichiarazione letterale degli importi di assegni in Euro.

      Lo script che mostro rappresenta un convertitore di numeri: da numeri in cifre a numeri in lettere, ad esempio il numero 123456 sarà convertito in Centoventitremilaquattrocentocinquantasei.
      Questo script, abbastanza originale nell'implementazione, nasce da una richiesta fatta nel NewsGroup it.comp.lang.javascript e consente di convertire numeri interi o decimali arrotondati al millesimo. Lo script si trova nel file digitation.js e va copiato integralmente nella vostra pagina HTML, oppure è possibile includerlo come file esterno con la seguente sintassi:
<script language="JavaScript1.1" src="digitation.js"></script>

      Lo script è realmente complesso, anche perché ho cercato di ridurlo il più possibile in termini di dimensioni (senza commenti occupa 2.19Kb) e ritengo sia superfluo un approfondimento delle parti principali che lo compongono, invece è molto più utile elencarne le potenzialità e i limiti per un uso corretto.

      Lo script è composto di 2 funzioni: digit3() e digitation(num,lower). Solo quest’ultima va considerata e usata.
      Come si vede i parametri di questa funzione sono due:
       - num è il numero che deve essere convertito in lettere e può essere indifferentemente di tipo "numeric" o "string"
       - lower impone che la prima lettera del risultato sia minuscola/Maiuscola (se omesso o impostato a 0 o a false, la prima lettera sarà Maiuscola!)

      Se il primo parametro (num) non rappresentasse un numero regolare, la funzione digitation() restituirà null. Attenzione, il separatore decimale è il punto non la virgola!
      Per far capire quali valori sono accettati e quali sono le convenzioni adottate, di seguito ci solo alcuni esempi che dovrebbero far chiarezza:
10.00 -> Dieci
0020 -> Venti
1.1 -> Uno e undecimo
1.10 -> Uno e diecicentesimi
0.07 -> Settecentesimi
.002 -> Duemillesimi
3.0024 -> Tre e duemillesimi
1000000000000000 -> Unmilionedimiliardi
1002000000000000 -> Unmilioneduemilamiliardi
280,65 -> null
100a -> null
1000000000000000000 -> null

      C'è un'unica limitazione, come avete forse notato: il numero da convertire deve essere minore di unmiliardodimiliardi, cioè la funzione digitation() restituirà valori corretti finché il primo parametro è <= 999999999999999999 dopodichè restituirà null.

      Non esiste una sezione personalizzabile vera e propria; chi volesse, ad esempio, che il valore 180 venga convertito in centottanta" anziché "centoottanta", deve cambiare l'ultimo valore dell'Array n10b che è uguale a "cento" con "cent":
n10b=new Array("","","vent","trent","quarant","cinquant","sessant","settant","ottant","novant","cento");

      comunque valori come 101 continueranno ad essere convertiti correttamente: "centouno".

      Infine nella pagina di prova è presente anche un'altra funzione utile che permette di digitare solo numeri e punti:
function onlynum(e)
   {
   if (e.which)
      {
      if(e.which!=46 && e.which!=8 && (e.which<48 || e.which>57))
      return false;
      }
   else if(e.keyCode)
      {
      if(e.keyCode!=46 && e.keyCode!=8 && (e.keyCode<48 || e.keyCode>57))
      return false;
      }
   return true;
   }
Questa funzione che va usata con l'event-handler onkeypress della text-box di input: <input type="text" name="cifre" onkeypress="return onlynum(event)"> viene interpretata bene dai browser più recenti e ignorata dagli altri.

      Da oggi mai più numeri in cifre!
      Per qualsiasi chiarimento sullo script scrivete a Gianni



Per navigare correttamente il sito è necessario abilitare i cookies.
Enjoy Open Source!
ffx80wh1

    javascript
 
 
 
         Stampa
          Segnala
          Preferiti





thb1202