Pourquoi la valeur décimale n’est-elle pas affichée?

Donc, j’ai mon script jQuery prêt, mais j’ai un problème, si une valeur est: 10 $, alors tout va bien, mais si une valeur est: $24,99 il ne montrera que 24 au lieu de 24,99 .

Comment puis-je réparer cela? c’est ma source:

http://jsfiddle.net/0L2n8wdt/34/

 
Product Product Price How much you want? Total Price
Fruit: $ 10
Drinks: $ 22,95
Cards: $ 5
Total price of all:
 $("input").on("keyup", function () { var $input = $(this); var howMany = parseInt($input.val()); var unitAmount = parseInt($input.parent().prev().text().replace("$", "")); var total = howMany ? howMany * unitAmount : 0; $input.parent().next().text("€ " + total); var total = 0; $("tbody tr td:last-child").each(function () { total += parseInt($(this).text().replace("€", "") || 0); }); $("#total").html("€ " + total); }); 

vous devez changer le séparateur décimal en dot et parseInt en parseFloat

 var unitAmount = parseFloat($input.parent().prev().text().replace("$", "").replace(",",".")) 

Et après les opérations arithmétiques, vous devez reconvertir votre numéro en chaîne et remplacer le point par:

  $input.parent().next().text("€ " + (""+total).replace(".",",")); 

Pour prix tatal:

 var total = 0; $("tbody tr td:last-child").each(function() { total += parseFloat($(this).text().replace("€","").replace(",",".") || 0); }); $("#total").html( (""+total).replace(".",",")); 

La démo complète est ici

C’est parce que vous avez utilisé parseInt , utilisez parseFloat .

Deuxièmement, la valeur 22,95 devrait être 22.95 .

 var unitAmount = parseFloat($input.parent().prev().text().replace("$", "")); total += parseFloat($(this).text().replace("€","") || 0); 

Voir la DEMO mise à jour.

 $input.parent().next().text(total > 0 ? ("€ "+total).replace(".",",") : ""); 

Cela devrait fonctionner et vous verrez au lieu de.

Puisque vous utilisez parseInt, utilisez plutôt parseFloat