Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.
Группа Вконтакте | Электронная почта | Симаков Яков ВК |
Задаёт формат для целых и дробных (с плавающей запятой) чисел, получаемых в результате математических операций.
NumberType | Тип числа. Возможные значения: IntegerFast, FloatFast, Integer, Float (первые два требуют версию не ниже 1.0.48). |
Format | Для Integer и IntegerFast задайте H или Hex (шестнадцатеричное), либо D (десятичное). Все шестнадцатеричные числа начинаются с префикса 0x (например, 0xFF).
Для Float и FloatFast формат задаётся в виде TotalWidth.DecimalPlaces (ОбщаяШирина.ЧислоЗнаковПослеЗапятой — например, 0.6). С версии 1.0.46.11 можно добавлять букву "e", чтобы получить научную нотацию: например, 0.6e или 0.6E (регистр буквы "e" здесь задаёт её регистр в числе). Замечание: в AutoHotkey 1.x научная нотация должна включать десятичную точку: например, 1.0e1 допустимо, а 1e1 — нет. TotalWidth, как правило, равна 0, что означает, что число не нужно дополнять пробелами или нулями. Если значение ненулевое, числа будут дополняться пробелами или нулями до заданной ширины. DecimalPlaces — это число знаков после запятой (будет произведено округление). Если эта часть не указана или равна 0, число не будет содержать ни десятичной точки, ни дробной части, т.е. число будет выглядеть как целое. Значение по умолчанию — 6. Дополнение (padding): если TotalWidth достаточно велика, к левой стороне числа будут добавлены пробелы, т.е. числа будут выравниваться по правому краю. Для выравнивания по левому краю задайте TotalWidth со знаком минус. Для дополнения нулями вместо пробелов, поставьте 0 слева от TotalWidth (например, 06.2). |
С версии 1.0.48 IntegerFast может быть использован вместо Integer и FloatFast вместо Float.
Если медленный режим Integer или Float используется где-либо в скрипте, то даже если данная команда SetFormat никогда не выполняется, кэширование чисел (целых или дробных соответственно) отключается с самого начала выполнения скрипта.
С версии 1.0.48 эти числа хранятся в переменных с точностью около 15 десятичных цифр, при условии что нигде в скрипте нет команды SetFormat Float (т.е. не используется медленный режим). В противном случае точность определяется по DecimalPlaces (как это было в версиях до 1.0.48). Иными словами, когда результат вычисления сохраняется в переменную, точность сверх заданной теряется и не может быть восстановлена иначе, как путём задания более точного формата — например, SetFormat, FloatFast, 0.15 — и повторного вычисления результата. Чтобы избежать таких потерь точности, избегайте использовать SetFormat Float в скрипте, либо используйте SetFormat FloatFast.
Независимо от того, действует ли медленный или быстрый режим, дробные числа округляются до DecimalPlaces всякий раз, когда они отображаются на экране или конвертируются в строку текста (например, через MsgBox или FileAppend). Чтобы увидеть полную точность, используйте что-нибудь вроде SetFormat, FloatFast, 0.15
Для конвертации дробного числа в целое используйте команды Var:=Round(Var), Var:=Floor(Var) или Var:=Ceil(Var). Чтобы превратить целое число в дробное, прибавьте к нему 0.0 (например, Var+=0.0) или используйте что-нибудь вроде MyFloat:=Round(MyInteger, 1).
Встроенная переменная A_FormatFloat содержит текущий формат дробных чисел (например, 0.6).
Целые результаты вычислений обычно представляются в десятичном виде. Чтобы переключиться на шестнадцатеричный, используйте команду SetFormat, IntegerFast, Hex. Это также можно использовать для конвертации целого из десятичного в шестнадцатеричное (или наоборот), как показано в примере в конце этой страницы.
Литеральные целые числа в скрипте можно писать как в шестнадцатеричном, так и в десятичном виде. Шестнадцатеричные целые начинаются с префикса 0x (например, 0xA9). Их можно использовать везде, где ожидается числовое значение. Например, Sleep 0xFF эквивалентно Sleep 255, независимо от текущего формата целых, установленного через SetFormat.
AutoHotkey поддерживает 64-битные целые, которые занимают диапазон от -9223372036854775808 (-0x8000000000000000) до 9223372036854775807 (0x7FFFFFFFFFFFFFFF).
Встроенная переменная A_FormatInteger содержит текущий формат целых чисел (H или D).
Если SetFormat в скрипте не используется, целые по умолчанию представляются в десятичном виде, а дробные имеют формат 0.6. Каждый новый поток (запускаемый через горячую клавишу, пункт меню или таймер) стартует со значениями по умолчанию. Эти умолчательные значения можно изменить, если использовать SetFormat в секции автовыполнения (вверху скрипта).
Операция присвоения в старом стиле, как в примере x=%y%, опускает все предшествующие числу или следующие за ним пробелы. Чтобы избежать этого, используйте команду AutoTrim или оператор присвоения с двоеточием (например, x:=y).
Вы можете определить, содержит ли переменная числовое значение, с помощью команды if var is number/integer/float.
Чтобы дополнить целое до нужной ширины нулями или пробелами без применения к нему математики дробных чисел, следуйте этому примеру: