Деньги в копейках
Условие
createMoney(): parse('1 234,56 ₽') → копейки числом; format(копейки) → '1 234,56 ₽'; add и multiply работают без потери точности. Умножение на дробный коэффициент округляет к ближайшей копейке.
Что проверяют тесты
разбор
вывод
отрицательные
сложение без потери точности
умножение округляет к копейке
туда и обратно
Как подойти
Единственный надёжный способ считать деньги в JS - целые копейки. Причина - IEEE-754: 0.1 + 0.2 даёт 0.30000000000000004, и после сотни операций расхождение становится видимым в отчёте. Дробные числа появляются только на границах: при разборе ввода и при умножении на ставку, и в обеих точках результат немедленно округляется обратно к целым копейкам. Альтернатива для больших сумм - BigInt.
Подсказки: 3
- Все вычисления - в целых копейках, дробей быть не должно.
- 0.1 + 0.2 в двоичной дроби не равно 0.3 - отсюда всё правило.
- Округление к копейке нужно только на границе умножения.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.