Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Chagas Neto

Funcao extenso em Javascript

Recommended Posts

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 + ")";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não analizei o código como um todo. Mas talvez o erro seja o operador "%", eu suponho que voce queira dividir o numero.

 

Se eu acertei, então troque todos os " % " por " / ", que é o operador de divisão que o javascript utiliza.

 

O operador " % ", é conhecido como mod.

 

Mod é um operador matemático que retorna o resto da divisão.

 

Ex:

var resto, conta, str = [];
conta = "4 % 2 = ";
resto = 4 % 2;
str.push(conta);
str.push(resto);
conta = "<br>5 % 3 = ";
resto = 5 % 3;
str.push(conta);
str.push(resto);
document.write(str.join('\n'));

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.