Что нового

Преобразовать строковое значение числа в численное.

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Доброго всем времени суток. Занимаюсь программированием уже достаточно времени и в алгоритмах с особыми проблемами как таковыми не сталкивался, ибо изучал ещё Паскаль на первом курсе и сдал на отлично. Пишу кое-как, код получается ноптимизированным и рессурсы используются не рациональо. А вопрос вот в чём. Имеется строковая переменная и надо из неё извлечь число, чтоб оно было в виде числовой переменной и дальше с ним работать как с числом - сравнивать с другими числами, прибавлять - вычитать, умножать - делить и т.д.

Пусть имеется переменная $str="64 " и нужно извлечь это число 64 и присвоить скажем переменной $real

Код:
Func StrToInt($str) ; $str - строковая переменная например "64 " 
	If $str Not Chislo Then ; Если строка не содержит чисел вернуть -1
		StrToInt=-1         ; Так как входные числа больше 0 и не превосходят 100
	Else
		StrToInt=preabrazovanie($str) ; Преобазовать в целое число (саму функцию не знаю, которая бы это делала)
	EndIf
EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: Преобразовать строковое значение числа в яисленное.

ggzgamer [?]
Имеется строковая переменная и надо из неё извлечь число, чтоб оно было в виде числовой переменной и дальше с ним работать как с числом - сравнивать с другими числами, прибавлять - вычитать, умножать - делить и т.д.
Код:
$str="64 "
ConsoleWrite(IsString($str) & @CRLF) ; 1 - строка
$str = Execute($str)
ConsoleWrite(IsString($str) & @CRLF) ; 0 - уже не строка
ConsoleWrite(IsInt($str) & @CRLF) ; 1 - число
 
Автор
G

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Re: Преобразовать строковое значение числа в яисленное.

и в итоге переменная $str примет значение 64?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: Преобразовать строковое значение числа в яисленное.

ggzgamer
Код:
Number
 
Автор
G

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Re: Преобразовать строковое значение числа в яисленное.

Ухты! Спасибо бессоным админам, помогли. Можно закрывать) :ok:
 

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
ggzgamer
Не обязательно преобразовывать. Если выполняется числовая операция, то переменная автоматически преобразовывается в число примерно по такому алгоритму: а) удаляются пробельные символы (табы пробелы, перенос строки), далее слева считываются числа до первого буквенного символа, которые и будут являтся числом. Если первый символ является буква, то следующие за ней цифры уже не воспинимаются числом и этот текст приравнивается к нулю, то есть будто это 0.

Код:
[email protected]&' 003'+' 003'&@CRLF
MsgBox(0, 'Message', $text)


Если текстовая опреация, то числа воспринимаются как текст.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 712
ggzgamer

В отличии от Pascal, в AutoIt все переменные имеют тип Variant, т.е. могут менять тип данных динамически. Поэтому, например, следующая запись является нормой:

Код:
Global $Number

$Number = '64'
ConsoleWrite($Number & ', Тип - ' & VarGetType($Number) & @CR)
$Number = Number($Number)
ConsoleWrite($Number & ', Тип - ' & VarGetType($Number) & @CR)
$Number = String($Number)
ConsoleWrite($Number & ', Тип - ' & VarGetType($Number) & @CR)
 
Автор
G

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
ConsoleWrite я не понимаю как работает :whistle:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
ggzgamer,
Код:
Global $Number

$Number = '64'

MsgBox(64, 'Info', $Number & ', Тип - ' & VarGetType($Number))
$Number = Number($Number)
MsgBox(64, 'Info', $Number & ', Тип - ' & VarGetType($Number))
$Number = String($Number)
MsgBox(64, 'Info', $Number & ', Тип - ' & VarGetType($Number))


ggzgamer [?]
ConsoleWrite я не понимаю как работает
В SciTE:
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Код:
$Var1 = "4" ;переменной $Var1 присвоим строку "4"
$Var2 = $Var1 * 2 ; переменной $Var2 присвоим произведение переменной $Var1 и 2
MsgBox(64, "Itog1", $Var2) ; посмотрим, что будет в итоге (в переменной $Var2)
$Var3 = $Var2 / 2 + 1
MsgBox(64, "Itog2", $Var3) ; посмотрим, что будет в итоге
 
Верх