Ir para conteúdo

POWERED BY:

Arquivado

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

junaooaks

[Resolvido] soma simples

Recommended Posts

ola pessoal estou tentando fazer uma soma simple e nao estou conseguindo http://forum.imasters.com.br/index.php?app=forums&module=post&section=post&do=new_post&f=6#

 

e muito simples mesmo pega um valor de uma linha

<td id ="sub"><span id="vl" style="color:#F00;">0</span>  </td>

ex do valor : 10.26

 

calcular com o valor do input

<input name="acrescimo" type="text" class="effect" id="per" value="" size="15" onBlur="soma();" />

ex do valor digitado: 10

 

a soma e calcular a porcentagem

função para calcular

function soma (){
       vl=document.getElementById('vl').innerHTML;
       per =document.getElementById("per").value;

       resultado = ((vl / 100) * per) + vl;

       document.custo.total.value=resultado;

   }

 

aparece o resultado de: 1.02610.26

 

nao sei como.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo,

 

talvez isso esteja acontecendo porque você está operando com dados do tipo 'string'.

 

Como você deve saber uma "soma" de tipos strings é na verdade uma concatenação, ex:

var a = "1";
var b = "1";
var resultado = a + b; // retorna "11";

 

Os dados capturados dos elementos HTML vem sempre no tipo string. Se você quer fazer cálculos com eles, precisa antes transformá-los em números usando as funções parseInt (para valores inteiros) ou parseFloat (para pontos flutuantes/valores fracionados).

 

Creio que o seu problema deve se resolver se você converter:

var vl  = parseFloat(document.getElementById('vl').innerText);
var per = parseFloat(document.getElementById("per").value   );

Compartilhar este post


Link para o post
Compartilhar em outros sites

o mano era isto mesmo

 

agora como faço para usar

resultado = Math.round(resultado);

não esta redondando a casa decima

10.88888888 converteria para 11.00

 

function soma (){
       vl  = parseFloat(document.getElementById('vl').innerHTML);
       per = parseFloat(document.getElementById("per").value);

       resultado =((vl / 100) * per) + vl;

       resultado = Math.round(resultado);

       document.custo.total.value=resultado;

   }

 

resolvido

function soma (){
       vl  = parseFloat(document.getElementById('vl').innerHTML);
       per = parseFloat(document.getElementById("per").value);

       resultado =((vl / 100) * per) + vl;

       resultado = Math.round(resultado);
       resultado = (Math.round(resultado*100))/100;
       document.custo.total.value=resultado;

   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você quer então é formatar o resultado. Javascript não usa 11.00, pois 11 é um inteiro e não um ponto flutuante, então não deve ter pontos. Se você quiser colocar pontos, terá que converter esse número em uma string (e não poderá fazer mais cálculos com ele), isso deve ser feito, portanto, apenas para exibição de um resultado para o usuário.

 

Você pode usar essa função, que tenta emular a função number_format do PHP no JS:

http://phpjs.org/functions/number_format:481

 

resultado = Math.round(10.88888888);
resultado = number_format(resultado, 2, '.', ''); // 11.00

 

 

 

Se o que você quer mesmo é formatar um valor monetário, seria conveniente que, por exemplo, 1010.88888888 fosse convertido para 1.011,00 ao invés de 1011.00.

 

Neste caso use a função assim:

resultado = number_format(resultado, 2, ',', '.');

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.