Javascript不进行算术运算

时间:2016-03-14 17:34:59

标签: javascript

我有一个带有此代码的javascript函数

total = parseFloat(subtotal).toFixed(2);
if(!$('#tablebody').is(':empty')){
                    $('#tablebody tr').each(function() {
                        total += parseFloat($(this).find('.subtotals').html()).toFixed(2);    
                    });
                }

但它并没有进行算术运算,而是给了我一个类似251.562500000.00250.00的输出。它只是连接数字

我做错了什么?

3 个答案:

答案 0 :(得分:7)

toFixed返回一个字符串,击败了您的parseFloat来电。由于total已经是一个字符串,因此运行时没有任何问题只是连接它们。

要避免累积舍入错误并以长字符串结尾,请保存程序最后的toFixed调用。

total = parseFloat(subtotal);
if(!$('#tablebody').is(':empty')){
  $('#tablebody tr').each(function() {
    total += parseFloat($(this).find('.subtotals').html());    
  });
}
totalString = total.toFixed(2);

答案 1 :(得分:1)

JOIN返回带有2位小数的格式化字符串。

因此,您的.toFixed(2)只是连接字符串。

你不想要那个。

答案 2 :(得分:0)

toFixed函数将它们转换为字符串。字符串在遇到加法运算符时通过连接来表现。 http://www.w3schools.com/jsref/jsref_tofixed.asp