Задать вопрос
zkrvndm
@zkrvndm
Архитектор решений

Как убедится, что в переменной точно число?

Пишу бота для участия в аукционах, алгоритм расчета шагов и цен готов, но я боюсь, что при каких-то уникальных обстоятельствах мой алгоритм может глюкануть и на выходе выдать какую-нибудь аброкадабру или цену ниже цены отсечки.

Собственно, перед тем как ботом подавать свою цену, я хочу эту цену проверять на корректность. Каким образом я могу убедится со 100% гарантией, что в переменной точно лежит число и это число больше некой заранее заданной суммы?

Понимайте в чем проблема, если в переменную попадает какой-нибудь Infinity, NaN, Undefined или окажется, что цена ниже той, что задана как цена отсечки, то не сносить мне головы, поэтому я просто обязан перестраховаться по максимуму.

Мой вариант проверки:
price = 13799.12; // Цена для подачи предложения в аукцион
min_price = 10000; // Цена ниже которой нельзя отпускаться

// Проверяем, что это вообще число, а не какой-нибудь undefined:

if (typeof price == 'number') {

	// Проверяем, что число конечное и не является бесконкечностью:

	if (isFinite(price)) {
	
		// Проверяем, что число не ялвяется NaN:
	
		if (!isNaN(price)) {
		
			console.log('Переменная price имеет тип number и при этом не является Infinty или NaN');
			
			if (price >= min_price) {
				
				console.log('Значение переменной price равно или выше цены отсчеки, все в порядке');
				
			}
			
		}
		
	}
	
}

Но я боюсь, что я что-то пропустил или чего-то не учел, что стоило бы предусмотреть. Подскажите, пожалуйста, что я еще должен проверить, чтобы получить железобетонную 137% уверенность, что с передаваемой ценой все в порядке?
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой 10 комментариев
Пригласить эксперта
Ответы на вопрос 3
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
тестами покрой
Ответ написан
ты можешь знатно упростить код, написал регулярку в функции, и тебе в целом если нужна будет проверка на число, ты не будешь писать такие конструкции
Ответ написан
@nvdfxx
Senior Pomidor developer
if(/^\d+$/.test(price) && typeof(price) == 'number' && price >= min_price && price <= max_price)
Проверка на бесконечность бесполезна, когда речь идет о счетном количестве, нужно вводить максимальные значения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы