0

我目前正在使用此代码从表中的列计算总数:

function calculateTotals() {
//these will hold the totals
var hours = 0;

//reference the rows you want to add
//this will not include the header row
var rows = $("#deliverables tr:not(:first-child, :last-child)");
rows.children("td:nth-child(2)").each(function() {
    hours += parseInt($(this).html());
});

midHours = (hours).toFixed(2);

$(".total-hours").html(midHours);

};

但是,输出midHours不会显示小数。例如,值为 12.5 的表格单元格 - 在.total-hours单元格中输出为 12。

4

3 回答 3

2

因为您使用的是 parseInt(),所以请改用 parseFloat()

var rows = $("#deliverables tr:not(:first-child, :last-child)");
rows.children("td:nth-child(2)").each(function() {
    hours += parseFloat($(this).html());
});
于 2013-08-21T17:00:40.137 回答
0

而是使用parseInt,将您的值乘以 1 (your_val * 1)。它将一个值转换为数字。

hours += $(this).html() * 1;
于 2013-08-21T17:07:44.183 回答
0

Arun 说了什么,但我提供一个解释,因为您显然对变量不太了解,整数是没有小数位的数字,例如 15 或 256 或 108,197;在 parseInt(n) 中,int 代表整数,在 parseFloat(n) 中的 float 代表浮点数

如果将浮点数转换为 int,它只会删除小数点后的所有内容而不进行四舍五入,因此 72.9999999999 将变为 72。快速解决方法是添加 .499999999,然后转换为整数,但前提是您确实想转换为整数使用四舍五入,听起来你没有。

如果需要小数位,请使用 parseFloat

于 2013-08-21T17:15:14.013 回答