jQuery таблица сумм toFixed не работает должным образом - PullRequest
1 голос
/ 18 марта 2020

У меня есть таблица Dynami c с данными, которые могут быть отформатированы по-разному. Например: 500 500,57 1500,00 1,500,00. В настоящее время я делаю str_replace, чтобы удалить первую точку на тысячную, а затем заменить запятую на точку.

echo str_replace(array(".", ",",), array("", "."), $row['rad_iznos']); 

Это прекрасно работает, и я получаю только тысячную с разделителем точек на десятичных числах. Однако когда я использую опцию toFixed (2) для суммы, значение десятичной дроби остается позади, и оно должно работать в соответствии с этим: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_tofixed. Как видите, только десятичные дроби после округления до 2 цифр.

var totals=[0,0,0];
        $(document).ready(function(){

            var $dataRows=$("#sum_table tr:not('.totalColumn, .titlerow')");

            $dataRows.each(function() {
                $(this).find('.rowDataSd').each(function(i){        
                    totals[i]+=parseInt( $(this).html());
                });
            });
            $("#sum_table td.totalCol").each(function(i){  
                $(this).html('<span style="font-weight: bold;">'+totals[i].toFixed(2)+' kn</span>');
            });

        });

Вы можете увидеть пример здесь: enter image description here .57 отсутствует, и я просто не понимаю логи c за ним. Пожалуйста, порекомендуйте. тысячные значения верны.

1 Ответ

2 голосов
/ 18 марта 2020

Проблема не в .toFixed(), а в:

totals[i] += parseInt($(this).html());

, который будет добавлять значение каждой строки в виде целого числа - таким образом, теряя десятичные разряды по мере того, как он идет, поэтому, когда он достигает .toFixed() он уже потерял десятичные разряды.

Решение состоит в том, чтобы вместо этого использовать parseFloat(), чтобы сохранить десятичные разряды:

totals[i] += parseFloat($(this).html());
...