Pergunta

Este é o código jQuery:

  function Totalprice()
{
    var unitprice=$('#unitpay').val();
    var quota=$('#readers').val();
    var totalprice=unitprice*quota;
    $('#totalprice').text('$'+totalprice);

}

Quando o valor dos leitores é 67 e o UnitPay é 0,3, ele calcula o preço total e exibe $ 20.09999999999999998, não $ 20,1. O que há de errado? Se eu quiser exibir $ 20,1 em vez de $ 20.0999999999999998, como posso reescrever o código?

Foi útil?

Solução

Que tal agora:

$('#totalprice').text('$'+totalprice.toFixed(1));

ou:

$('#totalprice').text('$'+totalprice.toFixed(2));

para mostrá -lo como uma quantia real em dólares.

Outras dicas

Como seus comentaristas entusiasmados apontaram, é um erro de ponto flutuante. A solução rápida e fácil é usar um método de arredondamento como tofixed ().

Apenas use .toFixed(2). (link)

O problema é que os computadores não podem representar exatamente alguns números (são finitos e operam em binário), então coisas como essa acontecem.

O JavaScript tem alguns problemas de ponto flutuante bastante graves. Tente digitar 0,1+0,2 no seu console do Firebug em algum momento para se divertir.

Este não é um problema com o jQuery. Como foi mencionado acima, use tofixed ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top