2012-01-09 58 views
0

下面是代碼:爲parseFloat我簡單的JavaScript代碼忽略小數

function updateCartSubtotal() { 
    var subtotal = 0.00; 
    $('span.item-subtotal-value').each(function() { 
     subtotal = subtotal + parseFloat($(this).text()); //24.00 for example. 
    }); 

    console.log(subtotal); // Logs: "144" 
    $('span.cart-subtotal-value').text(subtotal); //Places: "144" in the .text(). 
    $('span.cart-subtotal').text(subtotal); 
} 

那我做錯了嗎?爲什麼這會忽略兩個尾隨零?

它正確添加,只是沒有顯示小數。

回答

3

123123.00是一樣的。當顯示一個浮點數時,沒有理由顯示不必要的數字。

更重要的是,浮動並不是特定於貨幣 - 所以如果要顯示十進制數字,就必須有許多更多。

如果要顯示具有特定位數的數字,請使用subtotal.toFixed(2)。它可以讓你用正確量的十進制數字組成的字符串:

>>> 123.00 
123 
>>> (123.00).toFixed(2) 
"123.00" 

所以,你的代碼看起來是這樣的:

$('span.cart-subtotal-value, span.cart-subtotal').text(subtotal.toFixed(2)); 
+2

在這種情況下,我需要**來顯示這些數字。這是爲了顯示價格小計。所以需要兩個額外的零。 – 2012-01-09 02:59:06

+0

請參閱我編輯的答案。 – ThiefMaster 2012-01-09 03:00:26

0

您可能感興趣的從PHPJS的number_format功能,這也將包括通常在貨幣中找到的千個分隔符。

+1

爲什麼不在JavaScript中使用[已有](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number/toFixed)?當需要/需要千分​​離器時,你是對的 - 然後你鏈接的功能是一個好主意。 – ThiefMaster 2012-01-09 03:01:52