Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola amigos. Tenho um formulário em PDF que tem um campo valor (monetário) que ao ser digitado o valor por extenso aparece ao lado. O script foi modificado a partir de uma javascript em ingles. Os problemas: o valor por extenso "cem" ou "cento", "milhão" ou "milhões". Abaixo a funcão que nao funciona para os casos referidos. Para os experts, deve ser moleza. O item matriz "aCent" foi criado por mim, assim como as traducoes do ingles (vinte, quatrocentos, etc). Eu agradeco antecipadamente.
Segue o script abaixo:
aTens = [ "Vinte", "Trinta", "Quarenta", "Cinquenta", "Sessenta", "Setenta", "oitenta", "Noventa"];
aOnes = [ "Zero", "Um", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove",
"Dez", "Onze", "Doze", "Treze", "Quatorze", "Quinze", "Dezesseis", "Dezessete", "Dezoito",
"Dezenove" ];
aCent = ["Cem", "Duzentos", "Trezentos", "Quatrocentos", "Quinhentos", "Seissentos", "Setecentos", "Oitocentos", "Novecentos" ]
function ConvertToHundreds(num)
{
var cNum, nNum;
var cWords = "";
num %= 1000;
if (num > 99) {
/ centenas /
cNum = String(num);
nNum = Number(cNum.charAt(0));
cWords = aCent[nNum-1]
num %= 100;
if (num > 0)
cWords += " e ";
}
if (num > 19) {
/ Tens. /
cNum = String(num);
nNum = Number(cNum.charAt(0));
cWords += aTens[nNum - 2];
num %= 10;
if (num > 0)
cWords += " e ";
}
if (num > 0) {
/ Ones and teens. /
nNum = Math.floor(num);
cWords += aOnes[nNum];
}
return cWords;
}
function ConvertToWords(num)
{
* var aUnits = [ "Mil", "Milhões", "Bilhões", "Trilhões", "Quatrilhões" ];*
* var aUnists2 = [ "Mil", "Milhão", "Bilhão", "Trilhão", "Quatrilhão" ];*
* var cWords = (num >= 1 && num < 2) ? "Real " : "Reais ";*
* var nLeft = Math.floor(num);*
* for (var i = 0; nLeft > 0; i++) { *
if (nLeft % 1000 > 0) {
if (i != 0)
cWords = ConvertToHundreds(nLeft) + " " + aUnits[i - 1] + " " + cWords;
else
cWords = ConvertToHundreds(nLeft) + " " + cWords;
}
nLeft = Math.floor(nLeft / 1000);
}
num = Math.round(num 100) % 100;*
if (num > 0)
cWords += " e " + ConvertToHundreds(num) + " Centavos";
//else
//cWords += "Zero Centavos";
return "(" + cWords + ")";
}
Carregando comentários...