Jquery Datatable列的总和显示无效结果

时间:2018-03-20 07:32:55

标签: javascript jquery datatables

我正在使用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
                );
            }
        });

1 个答案:

答案 0 :(得分:2)

问题在于JS - 它不擅长浮点运算,在控制台中尝试这个:

-5000.02 + 7000.00

它返回" 1999.9799999999996"。

要解决此问题,请使用toFixed()限制小数位数,请参阅a live example here