Ir para conteúdo
DuRodrig

0 Cálculo de porcentagem sem arredondamento

Recommended Posts

Pessoal, bom dia! 
Estou fazendo uma página com um cálculo simples de porcentagem.
Existe um formuário que coloco o valor da venda, a comissão é fixa em 13% e a tarifa é um valor que você coloca também.
Exemplo: (valor da venda) R$ 100,00 - (comissão 13%) - (tarifa) R$ 8,50 = (resultado) R$ 78,50, só que está gerando o resultado de R$ 79,00.

Como faço para corrgir esse problema?
Segue o código:


 

$(function(){

    $('#valorVenda').on('input', function() {
      calculate();
    });
    $('#tarifa').on('input', function() {
     calculate();
    });
    function calculate(){
        var pPos = parseFloat($('#valorVenda').val()); 
        var tar = parseFloat($('#tarifa').val());
        var result = " ";
        if(isNaN(pPos) || isNaN(tar)){
           }else{
           result = ((pPos - ((13.00 * pPos) / 100.00)) - tar).toFixed(2);               
        }
        $('#total').val(result);
        }
});

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu caso é somente adicionar um replace da virgula para ".".

 

ex:

var tar = parseFloat($('#tarifa').val().replace(",", "."));

Codigo inteiro:

$(function(){
    $('#valorVenda').on('input', function() {
      calculate();
    });
    $('#tarifa').on('input', function() {
     calculate();
    });
    function calculate(){
        var pPos = parseFloat($('#valorVenda').val()); 
        var tar = parseFloat($('#tarifa').val().replace(",", "."));
        var result = " ";
        if(isNaN(pPos) || isNaN(tar)){
           }else{
           result = ((pPos - ((13.00 * pPos) / 100.00)) - tar).toFixed(2);               
        }
        $('#total').val(result);
        }
});

Link Jsbin: https://jsbin.com/jeresaqamo/edit?html,css,js,output

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Lenon John
      Detalhe importante:
      Se eu digito MINHA_CHAVE_JADLOG incorreta, ai eu recebo um retorno informado que as credenciais estão incorretas.
      Se eu digito MINHA_CHAVE_JADLOG corretamente, não recebo nenhum retorno.

      $dados = [
        'frete' => [
          'cepori' => '29010070',
          'cepdes' => '29300040',
          'frap' => '',
          'peso' => 2,
          'cnpj' => '00000000000100',
          'conta' => '000001',
          'contrato' => '',
          'modalidade' => 4,
          'tpentrega' => 'D',
          'tpseguro' => 'N',
          'vldeclarado' => 100,
          'vlcoleta' => ''
        ]
      ];
      $postfields = http_build_query($dados);
       
      $header = array();
      $header[] = 'Authorization: Bearer MINHA_CHAVE_JADLOG';
      $header[] = 'Content-Type: application/json';
      $header[] = 'description:';
       
      $curl = curl_init('https://www.jadlog.com.br/embarcador/api/frete/valor/');
      curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
       
      $exec = curl_exec($curl);
      $jadlog = json_decode($exec);
       
      curl_close($curl);
       
      print_r($jadlog);
    • Por biakelly
      Oi, vim do fórum de PHP,  eu havia postado uma dúvida lá, mas acredito e por recomendação que minha dúvida seja melhor aplicada aqui.
       
      Bem, estou fazendo uma página que precisa ter a cotação do Bitcoin.
      Nesta pagina preciso de 2 inputs um que traga o preço do bitcoin e outro que traga o preço em real.
      Ex: 1 Bitcoin custa R$ xxx,00 reais (valor padrão)
       
      Mas ao digitar R$100,00 no campo real ele precisa trazer o preço equivalente a quantidade de Bitcoins que vale R$100,00
      O mesmo para o Bitcoin, se eu digitar uma fração ele precisaria trazer o valor em Reais.
       
      Encontrei um site que faz isso (https://dolarhoje.com/bitcoin-hoje/), mas queria algo para minha página parecido
       
       
      Bem, até consigo pegar o valor com este código simples em PHP:
       
      <?php $url = 'https://www.mercadobitcoin.net/api/btc/ticker'; $result = file_get_contents($url); $result = json_decode($result, true); ?>  
      Será que em Javascript é possível fazer isso? Desculpem, entendo quase zero de Javascript
      Vocês conseguem me ajudar?
    • Por BrazucaBostero
      Olá!
       
      Estou com uma dúvida daquelas sobre um código de calculo de desconto no javascript, abaixo segue o código
       
      JS
      function calcValor() { //Declarando as variaveis let preco, porcentagem, desconto, novopreco; //Obtendo dados atraves do prompt preco = parseFloat(document.getElementById("CAMPO_87").value); porcentagem = parseFloat(document.getElementById("CAMPO_85").value); alert(preco) document.getElementById("CAMPO_88").value = preco; alert(preco) //Realizando os calculos desconto = preco * porcentagem / 100; novopreco = preco - desconto; //O .toFixed(2) faz com que o valor seja corrijdo para duas casas decimais document.getElementById("CAMPO_88").value = novopreco; } HTML
      <div class="row"> <div class="col-md-2"><label class="a3label control-label" for="CAMPO_87">Valor da Mensalidade</label> <input class="a3formcontrol form-control" data-campo-id="@@87@@" data-nome="87 - Valor Mensalidade" data-tipo-documental-id="3" id="CAMPO_87" oninput="calcValor()" type="text" /> </div> <div class="col-md-2"><label class="a3label control-label" for="CAMPO_85">Bolsa (%)</label> <input class="a3formcontrol form-control" data-campo-id="@@85@@" data-nome="85 - Bolsa (%)" data-tipo-documental-id="3" id="CAMPO_85" oninput="calcValor()" type="text" /></div> </div> <div class="row"> <div class="col-md-2"><label class="a3label control-label" for="CAMPO_88">Mensalidade Final</label> <input class="a3formcontrol form-control" data-campo-id="@@88@@" data-nome="88 - Valor Mensalidade (F)" data-tipo-documental-id="3" id="CAMPO_88" type="text" oninput="calcValor()" /></div>  
       
      O que acontece, tenho 2 problemas, que estou a quase 1 semana e não consigo resolver
       
       
      Quando jogo somente o valor do campo mensalidade, ele deveria teoricamente aparecer no campo mensalidade final, independente ou não de haver desconto, porém para minha surpresa ele aparece exatamente igual a imagem abaixo
       

       
       
      E minha outra dúvida é sobre a questão de , e .
      Quando calculo desconto com , por exemplo. 2314,50, ele arredonda e quando coloco 2314.50, ele me da o valor exato. Alguém pode me dar uma luz? Desde já fico agredecido
    • Por aantunesl
      Senhores, por gentileza me ajudem na seguinte questão:
      Tenho um determinado valor, e quero acrescentar 10% no total. Detalhe, os 10% é em cima do valor.
       
      <!-- preciso incluir os 10% aqui --> <td>R$<?= number_format($valor, 2) ?></td> <!-- preciso incluir aqui tambem --> <p style="font-size:15px;">R$ {{number_format($payment->valor, 2, ',', '.') }}</p> Agradeço a força.
    • Por Mauricio Molina
      Ola,
       
      Tenho um formulário em abas onde cadastro dados dos alunos e mando para o banco de dados.
      <div role="tabpanel" class="tab-pane" id="avaliacao"> <div style="padding-top:20px;"> <form class="form-horizontal" action="" method="POST"> <div class="form-row"> <div class="form-group col-md-2"> <label for="peso">Peso</label> <input type="text" name='peso' class="form-control" id="peso" placeholder="Peso"> </div> <div class="form-group col-md-2"> <label for="altura">Altura</label> <input type="text" name='altura' class="form-control" id="altura" placeholder="Altura em metros"> </div> <div class="form-group col-md-2"> <label for="imc">IMC</label> <input type="text" name='imc' class="form-control" id="imc" placeholder="IMC"> </div> <div class="form-group col-md-2"> <label for="rcq">Relação Cintura Quadril</label> <input type="text" name='rcq' class="form-control" id="rcq" placeholder="RCQ"> </div> </div> </div> </div> O que gostaria de fazer é que ao digitar os dois primeiros, Peso e Altura, o campo IMC fosse preenchido automaticamente com o resultado (número inteiro)
       
      A fórmula para o calculo seria:
       
      Peso / altura x altura
       
      * Leia-se: peso dividido pela altura ao quadro
       
      Mas sinceramente entendo pouco de javascript, alguém pode me dar uma força?
       
      Tenho um script que peguei na internet que consigo fazer as operações matemáticas, mas não sei como alterar para realizar a operação acima.
       
      E preciso que não mostre as casas após a virgula, como neste script abaixo.
       
      <script type="text/javascript"> function id(el) { return document.getElementById( el ); } function metros_perc( un, cooper ) { return parseFloat(un.replace(',', '.'), 10) * parseFloat(cooper.replace(',', '.'), 10); } window.onload = function() { id('mquadra').addEventListener('keyup', function() { var result = metros_perc( this.value , id('cooper').value ); id('metros_perc').value = String(result.toFixed(2)).formatMoney(); }); id('cooper').addEventListener('keyup', function(){ var result = metros_perc( id('mquadra').value , this.value ); id('metros_perc').value = String(result.toFixed(2)).formatMoney(); }); } String.prototype.formatMoney = function() { var v = this; if(v.indexOf('.') === -1) { v = v.replace(/([\d]+)/, "$00"); } v = v.replace(/([\d]+)\.([\d]{1})$/, "$1,$20"); v = v.replace(/([\d]+)\.([\d]{2})$/, "$1,$2"); v = v.replace(/([\d]+)([\d]{3}),([\d]{2})$/, "$1.$2,$3"); return v; }; </script>  
×

Informação importante

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