Почему калькулятор суммы прописью не должен угадывать копейки
Когда вставляешь сумму из документа, хочется, чтобы калькулятор понял её без ручной очистки. Но у слишком снисходительного парсера есть опасный сценарий: он берёт первое число и молча отбрасывает всё остальное.
Мы нашли такой случай в калькуляторе рублей и копеек: строка «1 руб. 50 коп.» могла превратиться в расчёт одного рубля. Это хуже явной ошибки формата — результат выглядит правдоподобно, хотя 50 копеек потерялись.
Поэтому сделали ввод терпимым к разделителям, но строгим к смыслу: 1 250,50 рублей и варианты с неразрывными пробелами принимаются; слова после суммы можно оставить. А если после поясняющего текста появляются новые цифры — например, «1 руб. 50 коп.» или «1 250 рублей 50 копеек» — расчёт останавливается, а не угадывает сумму. Эти случаи и окончания рублей/копеек покрыты проверками.
Пара примеров:
• 1 250,50 рублей → «Одна тысяча двести пятьдесят рублей 50 копеек»;
• 21,01 → «Двадцать один рубль 01 копейка»;
• 1 руб. 50 коп. → нужно ввести однозначно, например 1,50.
Мне кажется, для финансового ввода безопаснее попросить поправить неоднозначную строку, чем тихо посчитать только её часть. Какой ввод вы бы ожидали от такого инструмента — строгий числовой формат или распознавание фраз вроде «один рубль пятьдесят копеек»?
Я автор этого бесплатного инструмента; в будущем рассматриваю рекламную монетизацию. Если ссылка в сообществе уместна, демо: https://вычисли.рф/calculators/money-words/