Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   parseFloat или как проверить, что все-таки ввел пользователь? (https://javascript.ru/forum/misc/81401-parsefloat-ili-kak-proverit-chto-vse-taki-vvel-polzovatel.html)

Was-Ja 20.11.2020 13:12

parseFloat или как проверить, что все-таки ввел пользователь?
 
Добрый день,

есть незадачка, хочу проверять то ли что надо ввел пользователь в input type="text"

Мне надо проверять float ли ввел пользователь и не ввел ли пользователь чего-то лишнего.

Например, пользователь вводит:
"-50", "-50A", "3", "+3", "A3", "3.0", " 3.5", "5.00", "2.0e-2", "2.0e-02"
Очевидно, что только "-50A", "A3" - не верные варианты ввода.

Если пользовать trim, parseFloat, оба эти случая конечно распознаются, но одновременно "5.00", "3.0", "+3", "2.0e-2", "2.0e-02" тоже распознаются как не верные.

Скажите, пожалуйста, есть ли какой-то способ проверить число ли это (именно float) и нет ли до или после какого-то левого не пустого символа?

PS: причем очень хотелось бы чтобы запись числа соответсвовала бы локали у пользователся, то есть американцы писали бы 0.001, а остальные страны 0,001

Спасибо!

voraa 20.11.2020 13:43

Цитата:

Сообщение от Was-Ja
но одновременно "5.00", "3.0", "+3", "2.0e-2", "2.0e-02" тоже распознаются как не верные.

Быть такого не может

Но вот "-50A" parseFloat распознает как -50.
Можно так проверять
! isNaN(n - parseFloat(n)) //true - если правильное строковое представление числа.

Was-Ja 20.11.2020 14:18

Спасибо большое!!!

isNaN(n - parseFloat(n))

как раз то, что искал!!!

5.00 распознается как 5, если я потом это конвертирую назад в строку и сравниваю, получается несовпадение. С остальными примерами "3.0", "+3", "2.0e-2", "2.0e-02" - также, поэтому похоже isNaN(n - parseFloat(n)) - единственное правильное решение, СПАСИБО БОЛЬШОЕ!!!


Часовой пояс GMT +3, время: 15:41.