Revision: 58183
Updated Code
at June 30, 2012 05:29 by glauberportella
Updated Code
function NumberInWords(numero) {
this.numero = numero;
this.extenso = [
{ numero: 1, escrita: 'um' },
{ numero: 2, escrita: 'dois' },
{ numero: 3, escrita: 'tres' },
{ numero: 4, escrita: 'quatro' },
{ numero: 5, escrita: 'cinco' },
{ numero: 6, escrita: 'seis' },
{ numero: 7, escrita: 'sete' },
{ numero: 8, escrita: 'oito' },
{ numero: 9, escrita: 'nove' },
{ numero: 10, escrita: 'dez' },
{ numero: 11, escrita: 'onze' },
{ numero: 12, escrita: 'doze' },
{ numero: 13, escrita: 'treze' },
{ numero: 14, escrita: 'quatorze' },
{ numero: 15, escrita: 'quinze' },
{ numero: 16, escrita: 'dezesseis' },
{ numero: 17, escrita: 'dezessete' },
{ numero: 18, escrita: 'dezoito' },
{ numero: 19, escrita: 'dezenove' },
{ numero: 20, escrita: 'vinte' },
{ numero: 30, escrita: 'trinta' },
{ numero: 40, escrita: 'quarenta' },
{ numero: 50, escrita: 'cinquenta' },
{ numero: 60, escrita: 'sessenta' },
{ numero: 70, escrita: 'setenta' },
{ numero: 80, escrita: 'oitenta' },
{ numero: 90, escrita: 'noventa' },
{ numero: 100, escrita: 'cem' },
{ numero: 200, escrita: 'duzentos' },
{ numero: 300, escrita: 'trezentos' },
{ numero: 400, escrita: 'quatrocentos' },
{ numero: 500, escrita: 'quinhentos' },
{ numero: 600, escrita: 'seiscentos' },
{ numero: 700, escrita: 'setecentos' },
{ numero: 800, escrita: 'oitocentos' },
{ numero: 900, escrita: 'novecentos' }
];
}
/**
* Transforma conteudo numerico escrito por extenso
*/
NumberInWords.prototype.write = function() {
var valores = [];
var a = this.verify(this.numero.toString());
var unid = a.length - 1;
var marc11 = 0;
for(var expo = 0; unid >= 0; unid--, expo++) {
if(a[a.length - 2] == 1 && marc11 === 0) {
if(a[a.length - 1] == 1)
valores[unid - 1] = this.extenso[10].escrita;
else
valores[unid - 1] = this.extenso[a[unid - 1] + a[unid] - 1].escrita;
valores[unid] = "";
marc11 = 1;
unid = unid - 1;
expo = expo + 1;
} else{
for(l = 0; l <= 35; l++) {
if(this.extenso[l].numero == a[unid] * this.exponent(expo))
valores[unid] = this.extenso[l].escrita;
}
}
}
return this.format(valores);
};
NumberInWords.prototype.exponent = function(v) {
var mult = 1;
if(v == 3)
return mult;
for(v; v > 0; v--)
mult = mult * 10;
return mult;
};
NumberInWords.prototype.format = function(v) {
var porExtenso;
var e = " e ";
switch(v.length){
case 1:
porExtenso = v[0];
break;
case 2:
porExtenso = v[0] + e + v[1];
break;
case 3:
porExtenso = v[0] + e + v[1] + e + v[2];
break;
case 4:
porExtenso = v[0] + " mil " + v[1] + e + v[2] + e + v[3];
break;
default:
porExtenso = "Erro";
}
if(porExtenso[porExtenso.length - 1] == " ")
porExtenso = porExtenso.substr(0, porExtenso.length - 2);
return porExtenso;
};
NumberInWords.prototype.verify = function(valor) {
var vrf = 0;
for(i = 0; i < valor.length; i++) {
if(valor.charAt(i) == ",")
vrf = 1;
}
if(vrf == 1){
valor = valor.split(",");
return valor[0];
}
return valor;
};
Revision: 58182
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 29, 2012 23:36 by glauberportella
Initial Code
function NumberInWords(numero) {
this.numero = numero;
this.extenso = [
{ numero: 1, escrita: 'um' },
{ numero: 2, escrita: 'dois' },
{ numero: 3, escrita: 'tres' },
{ numero: 4, escrita: 'quatro' },
{ numero: 5, escrita: 'cinco' },
{ numero: 6, escrita: 'seis' },
{ numero: 7, escrita: 'sete' },
{ numero: 8, escrita: 'oito' },
{ numero: 9, escrita: 'nove' },
{ numero: 10, escrita: 'dez' },
{ numero: 11, escrita: 'onze' },
{ numero: 12, escrita: 'doze' },
{ numero: 13, escrita: 'treze' },
{ numero: 14, escrita: 'quatorze' },
{ numero: 15, escrita: 'quinze' },
{ numero: 16, escrita: 'dezesseis' },
{ numero: 17, escrita: 'dezesete' },
{ numero: 18, escrita: 'dezoito' },
{ numero: 19, escrita: 'dezenove' },
{ numero: 20, escrita: 'vinte' },
{ numero: 30, escrita: 'trinta' },
{ numero: 40, escrita: 'quarenta' },
{ numero: 50, escrita: 'cinquenta' },
{ numero: 60, escrita: 'sessenta' },
{ numero: 70, escrita: 'setenta' },
{ numero: 80, escrita: 'oitenta' },
{ numero: 90, escrita: 'noventa' },
{ numero: 100, escrita: 'cem' },
{ numero: 200, escrita: 'duzentos' },
{ numero: 300, escrita: 'trezentos' },
{ numero: 400, escrita: 'quatrocentos' },
{ numero: 500, escrita: 'quinhentos' },
{ numero: 600, escrita: 'seiscentos' },
{ numero: 700, escrita: 'setecentos' },
{ numero: 800, escrita: 'oitocentos' },
{ numero: 900, escrita: 'novecentos' }
];
}
/**
* Transforma conteudo numerico escrito por extenso
*/
NumberInWords.prototype.write = function() {
var valores = [];
var a = this.verify(this.numero.toString());
var unid = a.length - 1;
var marc11 = 0;
for(var expo = 0; unid >= 0; unid--, expo++) {
if(a[a.length - 2] == 1 && marc11 === 0) {
if(a[a.length - 1] == 1)
valores[unid - 1] = this.extenso[10].escrita;
else
valores[unid - 1] = this.extenso[a[unid - 1] + a[unid] - 1].escrita;
valores[unid] = "";
marc11 = 1;
unid = unid - 1;
expo = expo + 1;
} else{
for(l = 0; l <= 35; l++) {
if(this.extenso[l].numero == a[unid] * this.exponent(expo))
valores[unid] = this.extenso[l].escrita;
}
}
}
return this.format(valores);
};
NumberInWords.prototype.exponent = function(v) {
var mult = 1;
if(v == 3)
return mult;
for(v; v > 0; v--)
mult = mult * 10;
return mult;
};
NumberInWords.prototype.format = function(v) {
var porExtenso;
var e = " e ";
switch(v.length){
case 1:
porExtenso = v[0];
break;
case 2:
porExtenso = v[0] + e + v[1];
break;
case 3:
porExtenso = v[0] + e + v[1] + e + v[2];
break;
case 4:
porExtenso = v[0] + " mil " + v[1] + e + v[2] + e + v[3];
break;
default:
porExtenso = "Erro";
}
if(porExtenso[porExtenso.length - 1] == " ")
porExtenso = porExtenso.substr(0, porExtenso.length - 2);
return porExtenso;
};
NumberInWords.prototype.verify = function(valor) {
var vrf = 0;
for(i = 0; i < valor.length; i++) {
if(valor.charAt(i) == ",")
vrf = 1;
}
if(vrf == 1){
valor = valor.split(",");
return valor[0];
}
return valor;
};
Initial URL
Initial Description
Write a given number in words - Escreve um número por extenso. Write in Brazilian Portuguese, sorry for english or other language guys but it can be adapted. Write from 1 to 9999 Based on a forum in http://scriptbrasil.com.br/forum/index.php?showtopic=105695
Initial Title
Number in Words (Número por extenso)
Initial Tags
number
Initial Language
JavaScript