Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery Datatable列之和显示无效结果_Javascript_Jquery_Datatables - Fatal编程技术网

Javascript Jquery Datatable列之和显示无效结果

Javascript Jquery Datatable列之和显示无效结果,javascript,jquery,datatables,Javascript,Jquery,Datatables,我使用jquery datatable页脚回调来查找两列的总和。对于前两列,它在页脚处给出了正确的总和值。但对于第三列,它给出了如下结果:1.0771827874123119e-11,因为第三列包含负值。是因为负值吗。我怎样才能解决这个问题 我正在使用以下javascript: $('.dataTablesSum1').DataTable({ "footerCallback": function (row, data, start, end, display) {

我使用jquery datatable页脚回调来查找两列的总和。对于前两列,它在页脚处给出了正确的总和值。但对于第三列,它给出了如下结果:
1.0771827874123119e-11
,因为第三列包含负值。是因为负值吗。我怎样才能解决这个问题

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

问题在于JS——它不擅长浮点运算,请在控制台中尝试以下操作:

-5000.02+7000.00

它返回“1999.97999996”


若要解决此问题,请使用
toFixed()
限制小数位数,请参阅。

若要将值解析为Int,只需使用parseInt即可,但该列包含类似12.35的十进制值,甚至包含负值-2.56。所以我需要对上面的脚本进行任何更改吗?是的,您需要更改上面的脚本并使用ParseFloat仍然显示相同的错误也许一个小JSFIDLE来说明您的问题可能会有帮助是的。我修正了…:)