O jQuery exibe US $ 20.0999999999999998 em vez de $ 20,1
-
21-09-2019 - |
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?
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 ().