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输出。它只是连接数字

我做错了什么?

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);

.toFixed(2)返回具有 2 位小数的格式化字符串。

因此,您的+只是连接字符串。

你不想要那个。

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

最新更新