parseFloat('1 250,50') отдаёт 1. Ни NaN, ни исключения: парсер дочитал до первого пробела и выбросил остаток. Единица уходит дальше как настоящая сумма.

Такую строку производит наш же код. Intl.NumberFormat('ru-RU') разделяет разряды неразрывным пробелом, и его вывод, вернувшись в parseFloat, даёт ту же единицу.

Лечится не угадыванием смысла, а нормализацией на входе. Снять пробелы всех видов, запятую сменить на точку. Если после суммы ещё цифры, как в «1 руб. 50 коп.», — остановиться и попросить ввести однозначно. Копейки считать целыми.
Просмотры: 4
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти