2010-12-10 3 views
6

Можно создать дубликат:
JavaScript: formatting number with exactly two decimalsПопытка форматировать число до 2 знаков после запятой JQuery

Начало немного перепутались с помощью переменных и теперь не могу показаться, чтобы получить расчет работать вообще !?

$("#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);  
}); 

ответ

20

$(this).temp1() выглядит особенно неуместны, я думаю, вы просто хотели использовать переменную temp1. Так как это уже номер, вам не нужно использовать parseFloat на нем либо:

$("#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

Я хотел бы предложить вам для преобразования строк на номер первой перед вычислением. Например,

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

Кроме того, если скидка в процентах (например, скажем, 25), то вы должны разделить на 100, т.е. list - (discount/100 * list)

BTW см это SO нить, где люди предупреждали против использования ToFixed : How to format a float in javascript?

+1

Должно быть total.toFixed (2) не total.ToFixed (2) – JasonH 2016-03-11 15:00:52

Смежные вопросы