Ir para conteúdo
Fórum Script Brasil
  • 0

Valor Por Extenso


babaloricha

Pergunta

Ola galera gostaria de saber se alguém tem uma função que escreva um numero por extenso.

de preferencia js , mas pode ser em outra linguagem! mas também que tebnha todas as funcões definidas, pois já peguie algumas mas que tinham funcoes que eram nativas da linguagem, que eu não entendo logo no consigo passar para js!

Eu já fiz uma mas ela tem problemas co 11 12 .... 19.

dez de já grato

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

ai vai a bucha! o programa e bem simples pos não faco questao de ponto nem virgula nem nada mas o defeito por enquanto e o numero 11!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<script language="javascript">
//esse codigo so funciona no ff  :(
var extenso=new Array();
extenso[0]= {numero:1,escrita:'um'};
extenso[1]= {numero:2,escrita:'dois'};
extenso[2]= {numero:3,escrita:'tres'};
extenso[3]= {numero:4,escrita:'quatro'};
extenso[4]= {numero:5,escrita:'cinco'};
extenso[5]= {numero:6,escrita:'seis'};
extenso[6]= {numero:7,escrita:'sete'};
extenso[7]= {numero:8,escrita:'oito'};
extenso[8]= {numero:9,escrita:'nove'};
extenso[9]= {numero:10,escrita:'dez'};
extenso[10]= {numero:11,escrita:'onze'};
extenso[11]= {numero:12,escrita:'doze'};
extenso[12]= {numero:13,escrita:'treze'};
extenso[13]= {numero:14,escrita:'quatorze'};
extenso[14]= {numero:15,escrita:'quinze'};
extenso[15]= {numero:16,escrita:'dezeseis'};
extenso[16]= {numero:17,escrita:'dezesete'};
extenso[17]= {numero:18,escrita:'dezoito'};
extenso[18]= {numero:19,escrita:'dezenove'};
extenso[19]= {numero:20,escrita:'vinte'};
extenso[20]= {numero:30,escrita:'trinta'};
extenso[21]= {numero:40,escrita:'quarenta'};
extenso[22]= {numero:50,escrita:'cinquenta'};
extenso[23]= {numero:60,escrita:'secenta'};
extenso[24]= {numero:70,escrita:'setenta'};
extenso[25]= {numero:80,escrita:'oitenta'};
extenso[26]= {numero:90,escrita:'noventa'};
extenso[27]= {numero:100,escrita:'cem'};
extenso[28]= {numero:200,escrita:'duzentos'};
extenso[29]= {numero:300,escrita:'trezentos'};
extenso[30]= {numero:400,escrita:'quatrocentos'};
extenso[31]= {numero:500,escrita:'quinhentos'};
extenso[32]= {numero:600,escrita:'seiscentos'};
extenso[33]= {numero:700,escrita:'setecentos'};
extenso[34]= {numero:800,escrita:'oitocentos'};
extenso[35]= {numero:900,escrita:'novecentos'};


function conta(){// funcao que  trasforma conteudo numerico escrito por extenso
    var valores= new Array();
    var a;
    a=document.getElementById("camp").value;
    unid=a.length - 1;
    for(var expo=0,unid;unid>=0;unid--,expo++){
         if(1==a[a.length-2] && a[unid]==1){//tratando 11 12 13....19
                valores[unid]=extenso[a[unid]+a[unid+1]-0-1].escrita; //-0 garente que o dado e numerico
                valores[unid+1]="";
        }
        else{    
            for(l=0;l<=35;l++){
                if(extenso[l].numero ==a[unid]*expoent(expo))
                    valores[unid]=extenso[l].escrita;
            }
        }
    }
    b=document.getElementsByTagName("table");
    b[0].rows[0].cells[1].textContent=formata(valores);    
}
function expoent(v){
    var mult=1;
    if(v==3)
        return mult;
    for(v;v>0;v--)
        mult=mult*10;
    return mult;
}
function formata(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";
        break;        
    }
    if(porExtenso[porExtenso.length-1]==" ")
        porExtenso=porExtenso.substr(0,porExtenso.length -2);
    return porExtenso;
}
</script>
<body>
<input type="text" size="10" id="camp" /><input type="button" onclick="conta()" />
<table>
    <tr>
        <td>por extenso:</td><td>aaaaaaaaaaaaa</td>
    </tr>
</table>
</body>
</html>

ta ai!

aceito todas as sugestoes :P

Link para o comentário
Compartilhar em outros sites

  • 0

babaloricha,

copiei o codigo que você postou ai em cima,

e não funcionou nem com 11, nem com 1, nem com numero nenhum. hehehe

postou o codigo certo!? hehehe

at,

---

agora que eu vi o teu comentario dentro do codigo dizendo que só funciona no FF.

veja, eu não deixei o codigo pronto e redondo não.

apenas dei uma lapidada para funcionar o numero 11. hehe

ah! e deixei funcionando no FF e IE.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>teste</title>
</head>

<script language="javascript">
var extenso = new Array();

extenso[0] = {numero:1,escrita:'um'};
extenso[1] = {numero:2,escrita:'dois'};
extenso[2] = {numero:3,escrita:'tres'};
extenso[3] = {numero:4,escrita:'quatro'};
extenso[4] = {numero:5,escrita:'cinco'};
extenso[5] = {numero:6,escrita:'seis'};
extenso[6] = {numero:7,escrita:'sete'};
extenso[7] = {numero:8,escrita:'oito'};
extenso[8] = {numero:9,escrita:'nove'};
extenso[9] = {numero:10,escrita:'dez'};
extenso[10]= {numero:11,escrita:'onze'};
extenso[11]= {numero:12,escrita:'doze'};
extenso[12]= {numero:13,escrita:'treze'};
extenso[13]= {numero:14,escrita:'quatorze'};
extenso[14]= {numero:15,escrita:'quinze'};
extenso[15]= {numero:16,escrita:'dezeseis'};
extenso[16]= {numero:17,escrita:'dezesete'};
extenso[17]= {numero:18,escrita:'dezoito'};
extenso[18]= {numero:19,escrita:'dezenove'};
extenso[19]= {numero:20,escrita:'vinte'};
extenso[20]= {numero:30,escrita:'trinta'};
extenso[21]= {numero:40,escrita:'quarenta'};
extenso[22]= {numero:50,escrita:'cinquenta'};
extenso[23]= {numero:60,escrita:'secenta'};
extenso[24]= {numero:70,escrita:'setenta'};
extenso[25]= {numero:80,escrita:'oitenta'};
extenso[26]= {numero:90,escrita:'noventa'};
extenso[27]= {numero:100,escrita:'cem'};
extenso[28]= {numero:200,escrita:'duzentos'};
extenso[29]= {numero:300,escrita:'trezentos'};
extenso[30]= {numero:400,escrita:'quatrocentos'};
extenso[31]= {numero:500,escrita:'quinhentos'};
extenso[32]= {numero:600,escrita:'seiscentos'};
extenso[33]= {numero:700,escrita:'setecentos'};
extenso[34]= {numero:800,escrita:'oitocentos'};
extenso[35]= {numero:900,escrita:'novecentos'};

function expoent(v){
    var mult = 1;
    
    if ( v == 3 ) return mult;
        
    for ( v; v > 0; v-- ) mult = mult*10;
        
    return mult;
}

function formata(v,a){
    var porExtenso;
    var e = " e ";    
    
    alert(v);
    switch( v.length ) {
        case 1: porExtenso = v[0]; break;
        case 2: if ( eval(a) < 21 ) { porExtenso = v[0]; } else { 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"; break;        
    }
    
    if ( porExtenso[porExtenso.length-1] == " " )
        porExtenso = porExtenso.substr(0,porExtenso.length -2);
        
    return porExtenso;
}

function conta() {
    var valores = new Array();
    var a = document.getElementById("camp").value;
    
    unid = a.length - 1;
    for( var expo = 0, unid; unid >= 0; unid--, expo++ ) {
        if ( 1 == a[a.length-2] && a == 1) {
            valores[unid] = extenso[a-1].escrita;
            valores[unid+1] = "";
        } else {
            for ( l=0; l <= 35; l++ ) {
                if ( extenso[l].numero == eval(a) ) {
                    valores[unid] = extenso[l].escrita;
                }
            }
        }
    }
    
    document.getElementById("escreve").innerHTML = formata(valores,a);    
}
</script>
<body>

<input type="text" size="10" id="camp" name="camp">
<input type="button" value="transforma" onclick="java script:conta();">
<table>
    <tr>
        <td>por extenso:</td>
        <td><div id="escreve">aaaaaaaaaaaaa</div></td>
    </tr>
</table>

</body>
</html>

agora é contigo, termina ai. :)

at+

Link para o comentário
Compartilhar em outros sites

  • 0

Opa terminei!

bompra quem quiser testar do jeito que o mestre sam colocou ta melhor mas prp que eu preciso não posso usa getElementsById

mas ta ai!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<script language="javascript">
//esse codigo so funciona no ff  :(
var extenso=new Array();
extenso[0]= {numero:1,escrita:'um'};
extenso[1]= {numero:2,escrita:'dois'};
extenso[2]= {numero:3,escrita:'tres'};
extenso[3]= {numero:4,escrita:'quatro'};
extenso[4]= {numero:5,escrita:'cinco'};
extenso[5]= {numero:6,escrita:'seis'};
extenso[6]= {numero:7,escrita:'sete'};
extenso[7]= {numero:8,escrita:'oito'};
extenso[8]= {numero:9,escrita:'nove'};
extenso[9]= {numero:10,escrita:'dez'};
extenso[10]= {numero:11,escrita:'onze'};
extenso[11]= {numero:12,escrita:'doze'};
extenso[12]= {numero:13,escrita:'treze'};
extenso[13]= {numero:14,escrita:'quatorze'};
extenso[14]= {numero:15,escrita:'quinze'};
extenso[15]= {numero:16,escrita:'dezeseis'};
extenso[16]= {numero:17,escrita:'dezesete'};
extenso[17]= {numero:18,escrita:'dezoito'};
extenso[18]= {numero:19,escrita:'dezenove'};
extenso[19]= {numero:20,escrita:'vinte'};
extenso[20]= {numero:30,escrita:'trinta'};
extenso[21]= {numero:40,escrita:'quarenta'};
extenso[22]= {numero:50,escrita:'cinquenta'};
extenso[23]= {numero:60,escrita:'secenta'};
extenso[24]= {numero:70,escrita:'setenta'};
extenso[25]= {numero:80,escrita:'oitenta'};
extenso[26]= {numero:90,escrita:'noventa'};
extenso[27]= {numero:100,escrita:'cem'};
extenso[28]= {numero:200,escrita:'duzentos'};
extenso[29]= {numero:300,escrita:'trezentos'};
extenso[30]= {numero:400,escrita:'quatrocentos'};
extenso[31]= {numero:500,escrita:'quinhentos'};
extenso[32]= {numero:600,escrita:'seiscentos'};
extenso[33]= {numero:700,escrita:'setecentos'};
extenso[34]= {numero:800,escrita:'oitocentos'};
extenso[35]= {numero:900,escrita:'novecentos'};


function conta(){// funcao que  trasforma conteudo numerico escrito por extenso
    var valores= new Array();
    var a;
    a=document.getElementById("camp").value;
    a=verifica(a);
    unid=a.length - 1;
    marc11=0;
    for(var expo=0,unid;unid>=0;unid--,expo++){
         if(a[a.length-2]==1 && marc11==0){
             if(a[a.length-1]==1)
                 valores[unid-1]=extenso[10].escrita;
            else valores[unid-1]=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(extenso[l].numero ==a[unid]*expoent(expo))
                    valores[unid]=extenso[l].escrita;
            }
        }
    }
    alert(valores);
    b=document.getElementsByTagName("table");
    b[0].rows[0].cells[1].innerHtml=formata(valores);    
}
function expoent(v){
    var mult=1;
    if(v==3)
        return mult;
    for(v;v>0;v--)
        mult=mult*10;
    return mult;
}
function formata(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";
        break;        
    }
    if(porExtenso[porExtenso.length-1]==" ")
        porExtenso=porExtenso.substr(0,porExtenso.length -2);
    return porExtenso;
}
function verifica(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];
    }    
    else return valor;
}
</script>
<body>
<input type="text" size="10" id="camp" /><input type="button" onclick="conta()" />
<table>
    <tr>
        <td>por extenso:</td><td>aaaaaaaaaaaaa</td>
    </tr>
</table>
</body>
</html>

esse codigo se limita 1 a 9999 , caso alguém queira um range maior , se quiser uma maozinha pra mudar podeme adiciona no MSN! falow! :lol:

Link para o comentário
Compartilhar em outros sites

  • 0

kara você pode fazer o seguinte vou dá exemplo function transformar ParaExteso(value{

let unidades = [zero , um , dois ,treze, quatro ,sinco .seis , sete ,oito ,nove ,dez , onze , doze , treze , quatorze ,quinze , dezesseis , dezessete , dezoito, dezenove]

agora vou criar as dezenas

let dezenas=[vinte , trinta , quarenta ,sinquenta , sessenta , setenta , oitenta , noventa]

let valorExtenso

If(value <=19){

valorExtenso = unidades [value]

returno valorExtenso

}

else If(value >19 & value <21){

valorExtenso= dezenas [0]

returno valorExtenso

}

else If(value >=21 & value <= 29){

valorExtenso = dezenas [0] + '' e" + unidades [value -20]

return valorExtenso

}

 

}

teste e tente intender essa lógica

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...