Код Senior Реализация с нуля обновлено

Деньги в копейках

Условие

createMoney(): parse('1 234,56 ₽') → копейки числом; format(копейки) → '1 234,56 ₽'; add и multiply работают без потери точности. Умножение на дробный коэффициент округляет к ближайшей копейке.

Что проверяют тесты

  • разбор

  • вывод

  • отрицательные

  • сложение без потери точности

  • умножение округляет к копейке

  • туда и обратно

Как подойти

Единственный надёжный способ считать деньги в JS - целые копейки. Причина - IEEE-754: 0.1 + 0.2 даёт 0.30000000000000004, и после сотни операций расхождение становится видимым в отчёте. Дробные числа появляются только на границах: при разборе ввода и при умножении на ставку, и в обеих точках результат немедленно округляется обратно к целым копейкам. Альтернатива для больших сумм - BigInt.

Подсказки: 3
  1. Все вычисления - в целых копейках, дробей быть не должно.
  2. 0.1 + 0.2 в двоичной дроби не равно 0.3 - отсюда всё правило.
  3. Округление к копейке нужно только на границе умножения.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.