Что нового

Ошибка при сравнении двух числовых переменных

joker2d

Новичок
Сообщения
182
Репутация
0
Autoit 3.3.14.0
Получаю значения переменных с помощью http запроса и при их сравнении простым условием получаю что большее число меньше
Преобразовывал переменные в число, проверял что там только цифры, ничего не помогает
Но важный момент все глюки если одна из переменных получает значение от 10 и больше
То есть глюк как понимаю в том что AutoIt не видит вторую цифру

Код:
; У $x - значени скажем 12 у $y значение 8
$x = StringRegExpReplace($x, "[^0-9]", "")
$y= StringRegExpReplace($y, "[^0-9]", "")
ConsoleWrite("StringIsInt ($x)=" & StringIsDigit($x) & @CRLF) ;Возвращает 1
ConsoleWrite("StringIsInt ($y)=" & StringIsDigit($y) & @CRLF) ;Возвращает 1

If $x < $y then
ConsoleWrite("tyt" & @CRLF)
endif


Если в коде присвоить значение одной переменной не с помощью http запроса, а явно скажем $x=13, то все работает без ошибок
Даже если сервер возвращает что то с ошибкой я же в коде явно преобразую все к цифрам

почему так происходит ?
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
потому что ты сравниваешь строки, а надо числа
Код:
$x = Number(StringRegExpReplace(12, "[^0-9]", ""))
$y= Number(StringRegExpReplace(8, "[^0-9]", ""))


StringRegExpReplace
Успех: Возвращает строку преобразованную регулярным выражением
 
  • Like
Реакции: Norm

edyapd

Осваивающий
Сообщения
380
Репутация
30
Плюсом к тому, что написал joiner
Код:
StringIsDigit   ; - Проверяет, что в строковой переменной содержатся только цифры
IsInt          ; - Проверяет, что переменная является целым числом
IsNumber       ; - Проверяет, является ли переменная числовым типом данных.

Просто внимательней читайте справку.
 
Верх