Rounding error

0

Good afternoon!

I have the following js function which returns the new values from the cart when the product quantity is changed:

  function add(_quant, _preco, _total, _estoque) {
      quantidade = parseInt($("#"+_quant).val());
      estoque = parseInt($("#"+_estoque).val());
      preco = parseFloat($("#"+_preco).val());

      idCampo = _quant.substring(10, _quant.lenght);

      novaQuantidade = quantidade + 1;

      if(novaQuantidade <= estoque) {         
          if(novaQuantidade == 0) {
              alert("Quatidade não por ser 0");
          } else {
              total = novaQuantidade * preco;                 
              $("#"+_quant).val(novaQuantidade) ;
              $("#"+_total).html(total.toFixed(2));

              $.ajax({
                   type: "POST",
                   url: "_required/sessaoCarrinho.php",
                   data: {idProduto:idCampo, novaQuantidade: novaQuantidade},
                   dataType: 'json'
                  }).done(function(response){
                     subTotal = response['subTotal'];
                     $(".subTotal").html(subTotal.toFixed(2));            
                     $(".totalCarrinhoTopo").html(subTotal.toFixed(2));
              });


          }
      }  else {
              alert("Quantidade escolhida maior que estoque");
      }
  }

It turns out that this calculation is giving rounding error,

What to do?

    
asked by anonymous 10.03.2017 / 18:45

1 answer

0

Try to make a replace of the comma point in the price field before converting to float. As I have done below.

function add(_quant, _preco, _total, _estoque) {
  quantidade = parseInt($("#"+_quant).val());
  estoque = parseInt($("#"+_estoque).val());
  preco = parseFloat($("#"+_preco).val().replace(",","."));

  idCampo = _quant.substring(10, _quant.lenght);

  novaQuantidade = quantidade + 1;

  if(novaQuantidade <= estoque) {         
      if(novaQuantidade == 0) {
          alert("Quatidade não por ser 0");
      } else {
          total = novaQuantidade * preco;                 
          $("#"+_quant).val(novaQuantidade) ;
          $("#"+_total).html(total.toFixed(2));

          $.ajax({
               type: "POST",
               url: "_required/sessaoCarrinho.php",
               data: {idProduto:idCampo, novaQuantidade: novaQuantidade},
               dataType: 'json'
              }).done(function(response){
                 subTotal = response['subTotal'];
                 $(".subTotal").html(subTotal.toFixed(2));            
                 $(".totalCarrinhoTopo").html(subTotal.toFixed(2));
          });


      }
  }  else {
          alert("Quantidade escolhida maior que estoque");
  }

}

    
14.03.2017 / 18:35