Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2020, 13:12
Кандидат Javascript-наук
Отправить личное сообщение для Was-Ja Посмотреть профиль Найти все сообщения от Was-Ja
 
Регистрация: 20.09.2020
Сообщений: 130

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

Спасибо!

Последний раз редактировалось Was-Ja, 20.11.2020 в 13:42.
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2020, 13:43
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,701

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

Но вот "-50A" parseFloat распознает как -50.
Можно так проверять
! isNaN(n - parseFloat(n)) //true - если правильное строковое представление числа.
Ответить с цитированием
  #3 (permalink)  
Старый 20.11.2020, 14:18
Кандидат Javascript-наук
Отправить личное сообщение для Was-Ja Посмотреть профиль Найти все сообщения от Was-Ja
 
Регистрация: 20.09.2020
Сообщений: 130

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

isNaN(n - parseFloat(n))

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с базой данных kda7979 AJAX и COMET 38 15.04.2019 07:35
Как проверить свёрнут ли div или нет? drakulawz Events/DOM/Window 4 14.10.2018 14:54
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37