2010-12-10 12 views
6

Possible en double:
JavaScript: formatting number with exactly two decimalsEssayer de formater nombre à 2 décimales jQuery

Obtenir un peu embrouillé en utilisant des variables et maintenant cant semblent obtenir le calcul de travailler du tout !?

$("#discount").change(function(){ 
      var list = $("#list").val(); 
      var discount = $("#discount").val(); 
      var price = $("#price"); 
      var temp = discount * list; 
      var temp1 = list - temp; 
      var total = parseFloat($(this).temp1()).toFixed(2); 

      price.val(total);  
}); 

Répondre

20

$(this).temp1() semble particulièrement sur place, je pense que vous vouliez simplement utiliser la variable temp1. Comme il est déjà un numéro, vous n'avez pas besoin d'utiliser parseFloat dessus soit:

$("#discount").change(function() { 
    var list = $("#list").val(); 
    var discount = $("#discount").val(); 
    var price = $("#price"); 
    var temp = discount * list; 
    var temp1 = list - temp; 
    var total = temp1.toFixed(2); 

    price.val(total); 
}); 
3

Je vous suggère de convertir les chaînes en premier numéro avant le calcul. Par exemple,

var list = parseFloat($("#list").val()); 
var discount = parseFloat($("#discount").val()); 
var price = $("#price"); 
var total = list - (discount * list); 
price.val(total.toFixed(2)); 

De plus, si une réduction est en pourcentage (par exemple, disons 25) alors vous devez diviser par 100-à-dire list - (discount/100 * list)

BTW, reportez-vous ce Thread où les gens avaient mis en garde contre l'utilisation toFixed : How to format a float in javascript?

+1

Doit être total.àFixer (2) pas total.ÀFixer (2) – JasonH