我正在使用jquery datatable footer回调来查找两列的总和。对于前两列,它在页脚处给出正确的总和值。但对于第3列,它会得到如下结果:1.0771827874123119e-11
,因为第3列包含负值。是因为负值。我该如何解决这个问题?
我正在使用以下javascript:
$('.dataTablesSum1').DataTable({
"footerCallback": function (row, data, start, end, display) {
var api = this.api(), data;
// Remove the formatting to get integer data for summation
var intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '') * 1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column(2)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
total1 = api
.column(3)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
total3 = api
.column(4)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
// Update footer
$(api.column(2).footer()).html(
total
);
$(api.column(3).footer()).html(
total1
);
$(api.column(4).footer()).html(
total3
);
}
});
答案 0 :(得分:2)
问题在于JS - 它不擅长浮点运算,在控制台中尝试这个:
-5000.02 + 7000.00
它返回" 1999.9799999999996"。
要解决此问题,请使用toFixed()
限制小数位数,请参阅a live example here。