Calculo com Decimal em Java Script

1,596 views
Skip to first unread message

Formigao

unread,
Jul 31, 2006, 9:10:53 AM7/31/06
to PHP Avançado
Caros Colegas,

Tenho 02 campos de um formulário que estou realizando uma
multiplicação simples, porém estou precisando agora multiplicar com
casas decimais. Como faço isso de uma maneira bem prática.

Atenciosamente,

Formigao

.:||Luiz Felipph||:.

unread,
Jul 31, 2006, 9:55:02 AM7/31/06
to phpav...@googlegroups.com
O javascript não entende ','(vigulas) como separador de decimais, por isso use pontos('.'):

valor = '20.25';
fator = '4';
result = valor*fator;

alert(result);
//deve retornar 90 redondo

vê lá se pega...


2006/7/31, Formigao <luisp...@gmail.com>:

Formigao

unread,
Aug 1, 2006, 8:02:25 PM8/1/06
to PHP Avançado
Ow...blz....deu certinho...

Mas tem como utilizar a virgula ?

E como trata as casas decimais ?

grato,

formigao


.:||Luiz Felipph||:. escreveu:

> --
> .: |Luiz Felipph
> .: |Programador PHP(Estudante)

.:||Luiz Felipph||:.

unread,
Aug 2, 2006, 6:53:34 AM8/2/06
to phpav...@googlegroups.com
infelizmente você terá que tratar o número depois de fazer cálculos...
depois vc pode trocar o ponto pela vírgula e usar essa função abaixo(eu uso para campos em formulários, vc terá que adapta-la)...

campooriginal é um objeto, eu costumo usar no evento
decimais são quantas casas depois da vírgula tu vai querer...

 onblur="formataValorMonetario(this,'2')"

//javascript

function formataValorMonetario(campooriginal,decimais)
{
  var posicaoPontoDecimal;
  var campo = '';
  var resultado = '';
  var pos,sep,dec;

//Retira possiveis separadores de milhar
  for (pos=0; pos < campooriginal.value.length; pos ++)
  {
    if (campooriginal.value.charAt (pos)!='.')
        campo = campo + campooriginal.value.charAt(pos);
  }

//Formata valor monetário com decimais
  posicaoPontoDecimal = campo.indexOf(',');
  if (posicaoPontoDecimal != -1)
   {
      sep = 0;
      for (pos=posicaoPontoDecimal-1;pos >= 0;pos--)
      {
        sep ++;
        if (sep > 3)
        {
           resultado = '.' + resultado;
           sep = 1;
        }

        resultado = campo.charAt(pos) + resultado;
      }

      // Trata parte decimal
      if (parseInt(decimais) > 0 )
      {
         resultado = resultado + ',';

         pos=posicaoPontoDecimal+1;
         for (dec = 1;dec <= parseInt(decimais); dec++)
         {
           if (pos < campo.length)
           {
              resultado = resultado + campo.charAt(pos);
              pos++;
           }
           else
              resultado = resultado + '0';
         }

      } // trata decimais
   }
   // Trata valor monetário sem decimais
   else
   {
      sep = 0;
      for (pos=campo.length-1;pos >= 0;pos--)
      {
        sep ++;
        if (sep > 3)
        {
           resultado = '.' + resultado;
           sep = 1;
        }
        resultado = campo.charAt(pos) + resultado;
      }
      // Trata parte decimal
      if (parseInt(decimais) > 0 )
      {
         resultado = resultado + ',';
         for (dec = 1;dec <= parseInt(decimais); dec++)
         {
              resultado = resultado + '0';
         }
      } // trata decimais
   }
   campooriginal.value = resultado;
}




2006/8/1, Formigao <luisp...@gmail.com>:
.:  |Programador PHP(Estudante)
Reply all
Reply to author
Forward
0 new messages