我有一个带有此代码的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
的输出。它只是连接数字
我做错了什么?
答案 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