2016-05-15 42 views
1

我試圖使用Math.round來總計只顯示2位小數,但它沒有這樣做。我究竟做錯了什麼?Math.round無法正常工作

$(document).ready(function() { 
    var totalPrice = 0; 

    $('.food').click(function() { 
     var $frm = $(this).parent(); 
     var toAdd = $frm.children(".productInput").val(); 
     var addPrice = parseFloat($frm.children(".priceInput").val()); 
     var addAmount = parseFloat($frm.children(".amountInput").val()); 

     if ($('.priceInput').val() == '') { 
      alert('Price can not be left blank'); 
     }; 
     if ($('.amountInput').val() == '') { 
      alert('Amount can not be left blank'); 
     } else { 

      var div = $("<div>"); 
      div.append("<p class='amount'>" + addAmount + "</p>", "<p class='product'> " + toAdd + " </p>", "<p class='price'>" + addPrice + "</p>", "<p class='delete'>" + "X" + "</p>"); 

      $frm.parent().children(".messages").append(div); 

      totalPrice += addAmount * addPrice; 

      $(".totalPrice").text("Total Price: $" + totalPrice); 
     } 


     console.log(addAmount); 
     console.log(addPrice); 
    }); 


    $(document).on("click", ".delete", function() { 
     /*   var subAmount = parseFloat($(this).siblings(".amount").text()); 
        var subPrice = parseFloat($(this).siblings(".price").text()); 
        totalPrice -= subAmount * subPrice; 
        $(".totalPrice").text("Total Price: $" + totalPrice);*/ 

     $(this).closest("div").remove(); 
     console.log(subPrice); 
     console.log(subAmount); 
    }); 

    $(document).on("mouseover", ".delete", function() { 
     var hoverAmount = parseFloat($(this).siblings(".amount").text()); 
     var hoverPrice = parseFloat($(this).siblings(".price").text()); 
     totalPrice -= hoverAmount * hoverPrice; 
     Math.round(totalPrice * 100)/100 
     $(".totalPrice").text("Total Price: $" + totalPrice); 

     $(this).closest("div").fadeTo("fast", 0.4); 
    }); 
    $(document).on("mouseout", ".delete", function() { 
     var subAmount = parseFloat($(this).siblings(".amount").text()); 
     var subPrice = parseFloat($(this).siblings(".price").text()); 
     totalPrice += subAmount * subPrice; 
     Math.round(totalPrice * 100)/100 
     $(".totalPrice").text("Total Price: $" + totalPrice); 


     $(this).closest("div").fadeTo("fast", 1.0); 
    }) 





    }); 

由於我使用的是浮點數,有時候這些數字會變成長小數而不是確切數量。我試圖通過使用Math.round來防止這種情況。如果有人對這個問題有另一種解決方案,那也是值得讚賞的。

+2

我想你應該使用Math.round(totalPrice * 100)/ 100的變量。例如:var result = Math.round(totalPrice * 100)/ 100; $(「。totalPrice」)。text(「Total Price:$」+ result); –

+1

['totalPrice.toFixed(2)'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)。 –

回答

3

Math.round單獨讓沒有賦值的變量如:

totalPrice = Math.round(totalPrice * 100)/100; 
// ^^ you're missing an assignment to store your operation result 

這裏的另一個建議兩個小數:

totalPrice = Number((totalPrice * 100)/100).toFixed(2)); 
$(".totalPrice").text("Total Price: $" + totalPrice); 
0

如果用貨幣合作是更好地使用定點數爲了精確。在javascript中沒有定點數字類型,所以請考慮使用外部庫。 例如Big.jsbignumber.js

+0

謝謝,這是我一定會研究,當我更舒適的JavaScript,仍然是初學者:) – Naomi