2012-01-09 79 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