Шаг 185.
Библиотека jQuery. Интерактивные формы. Работа с числовыми данными в формах. Обработка дробной части

    На этом шаге мы рассмотрим способ округления значения дробной части.

    Несмотря на то, что мы добавили символы ' руб' в конец каждого суммарного значения, JavaScript даже не подозревает, что имеет дело с денежными величинами. С точки зрения компьютера, это всего лишь числа, которые он отображает соответствующим образом. Следовательно, если общая сумма оканчивается нулем после десятичной точки, этот ноль будет отброшен.

    К счастью, эта проблема решается достаточно просто. Класс Number в JavaScript обладает несколькими методами, позволяющими решать проблемы подобного рода, и в данном случае мы используем метод .toFixed(). Этот метод принимает в виде аргумента число знаков после десятичной точки и возвращает строку, представляющую число с плавающей точкой, округленное до указанного числа знаков в дробной части:

  $('td.quantity input').change(function() {
    var totalQuantity = 0; 
    $('#cart tbody tr').each(function() {
      var price = parseFloat($('td.price', this)
                             .text().replace(' руб', ''));
      price = isNaN(price) ? 0 : price;
      var quantity = 
               parseInt($('td.quantity input', this).val(), 10);
      quantity = isNaN(quantity) ? 0 : quantity;         
      var cost = quantity * price;
      $('td.cost', this).text(cost.toFixed(2)+' руб');
      totalQuantity += quantity;
    });
    $('tr.shipping td.quantity').text(String(totalQuantity));
  });

    Теперь наши суммарные значения выглядят как нормальные денежные значения (рисунок 1).

Рис.1. Теперь суммарные значения выглядят как денежные величины

Полный текст этого примера можно взять здесь.


   Примечание. После длинной серии арифметических вычислений округление чисел с плавающей точкой может приводить к выявлению накопленных ошибок, которые даже метод .toFixed() не сможет исправить. Самый безопасный способ работы с денежными величинами в крупных приложениях заключается в том, чтобы хранить и оперировать целочисленными значениями в копейках; десятичная точка может быть добавлена позднее только для отображения значений.

    На следующем шаге мы рассмотрим прочие вычисления.




Предыдущий шаг Содержание Следующий шаг