如何设置(2)js数据表的十进制值

时间:2018-11-22 15:14:57

标签: javascript datatables decimal

我正在尝试将十进制数设置为二(2),但我无法成功。任何帮助,将不胜感激。我正在计算每个列视图的平均数量和所有列的平均总数。我面临的问题是,小数点后最多可以有14个位置,我只想将其减少到(2)。我正在使用数据表,并且指示使用.toFixed(2)。我尝试过但无法解决。请参阅下面的小提琴

我为自己的情况提供了jsfiddle

提前谢谢

$('#dtcuidadhrs').DataTable({
responsive: true,
"footerCallback": function(tfoot, data, start, end, display) {
    var api = this.api();

    for (var i = 0; i < api.columns().count(); i++) {

        var columnDataTotal = api
            .column(i)
            .data();
        var theColumnTotal = columnDataTotal
            .reduce(function(a, b) {
                if (isNaN(a)) {
                    return '';
                } else {
                    a = parseFloat(a);
                }
                if (isNaN(b)) {
                    return '';
                } else {
                    b = parseFloat(b);
                }
                return (a + b).toFixed(2);
            }, 0);

        var columnData = api
           .column( i, { page: 'current'} )
           .data()
        var theColumnPage = columnData
            .reduce(function(a, b) {
                if (isNaN(a)) {
                    return '';
                } else {
                    a = parseFloat(a);
                }
                if (isNaN(b)) {
                    return '';
                } else {
                    b = parseFloat(b);
                }
                return (a + b).toFixed(2);
            }, 0);

        // Update footer
        $( api.column( 0 ).footer() ).html('Avarage');
        $(api.column(i).footer()).html(
            theColumnPage / columnData.count() + ' ('+ theColumnTotal / columnDataTotal.count() +' Total)'
        );
    }
}
});

1 个答案:

答案 0 :(得分:1)

看看JS小提琴,您正在运行一个减少操作,以使用toFixed对每一列的平均值求和。

进行计算时,最好只舍入最后一个数字(否则精度会受到严重影响)。 请尝试以下操作:我会进行重构,但是您知道了

// Update footer
            $( api.column( 0 ).footer() ).html('Avarage');
            $(api.column(i).footer()).html(
                theColumnPage / columnData.count() + ' ('+ parseFloat(theColumnTotal / columnDataTotal.count()).toFixed(2) +' Total)'