1

Тема: AHK: Округление в минус.

Здравствуйте форумчане!

У меня возник вопрос, как сделать округление в минус? То есть если значение переменной 1 = 12.9
то он округлит её до 12 а не до 13.
Заранее спасибо за ответы!

2

Re: AHK: Округление в минус.

Или может можно получить остаток и потом его отминусовать от числа?

3

Re: AHK: Округление в минус.

n := Floor(12.9)
MsgBox, %n%

4 (изменено: ypppu, 2016-05-31 09:43:35)

Re: AHK: Округление в минус.

YMP пишет:

n := Floor(12.9)
MsgBox, %n%

Попробовал, 14.8 округляет все равно до 15.

5

Re: AHK: Округление в минус.

4Окей. А как округлить в плюс? К примеру 1.2 что бы было 2

6

Re: AHK: Округление в минус.

n := 14.8
MsgBox, % Floor(n)

n := 1.2
MsgBox, % Ceil(n)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Округление в минус.


Numpad4::
3 = 16
2 := 138
2/=10
Ceil(%2%)
3-=%2%
Sendinput {F6}/usedrugs %3%{Enter}
return

После такого скрипта перменная 3 становится 3, а мне в общем то надо 2...

8

Re: AHK: Округление в минус.

Переменные, состоящие из одних цифр, используются только как параметры, передаваемые скрипту, в остальных случаях использовать не нужно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: Alex_Lexon, 2016-05-27 15:07:45)

Re: AHK: Округление в минус.

teadrinker пишет:

Переменные, состоящие из одних цифр, используются только как параметры, передаваемые скрипту, в остальных случаях использовать не нужно.

К сожалению не знаю как написать скрипт без них.

10

Re: AHK: Округление в минус.

Alex_Lexon, ознакомьтесь с этой темой, отредактируйте свой пост.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Округление в минус.

teadrinker Выполнено!

12

Re: AHK: Округление в минус.

Также не нужно цитировать предыдущий пост полностью. Для скриптов используйте буквенные или буквенно-цифровые переменные: MyVar, x, y, Var1 и т. п.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Округление в минус.

teadrinker а что, есть разница?

14

Re: AHK: Округление в минус.

Читайте этот пост. Ну, и главное, эту статью.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15 (изменено: yalanne, 2016-05-27 21:30:37)

Re: AHK: Округление в минус.

Используя чисто числовые переменные могут возникнуть проблемы с передачей в функции. Еще использовать имя переменной как одну цифру может вызвать путаницу в прочтении кода, особенно если еще использовать математические действия.

+ Вот пример где скрипт получает параметры(из вне) в цифровые переменные
1 = Из_скрипта
msgbox %1% %2%

Без передачи параметров, текст окна будет такой:
http://i.imgur.com/bhkKuSG.png
Самый простой способ передать сюда параметры, это создать ярлык и в свойствах указать эти параметры:
http://i.imgur.com/sFDdjCf.gif
Вот так будет выглядеть окно:
http://i.imgur.com/LZ5HQdd.png
Параметр1 было уже в скрипте установлено новое значение.

Что бы так же не было путаницы, желательно в свою переменную заносить передаваемые параметры. Например:
Param1 = %1%



Alex_Lexon пишет:

После такого скрипта перменная 3 становится 3, а мне в общем то надо 2...

У переменной под названием 3 значение равно 16.
У переменной под названием 2 Значение 138.
Устанавливаем то что во второй переменной значение должно поделится на 10(Но этот оператор работает немного неправильно, но подходит к этому случаю. в англ справке это сказано.[кликабельно] Так как число не с плавающей точкой, то оператор сам округляет до минимально возможного числа) - Получаем число 13
Ceil тут вообще не работает, тут допущены 3 ошибки.
Так как в переменной по имени 3 значение 16, а в переменной 2 значение 13 получаем 16 - 13 = 3

3 = 16
2 := 138
2/=10
Ceil(%2%)
3-=%2%

+ Ошибки в Ceil

1) Значение никуда не заносится, просто уходит в пустоту. Нужно перед началом подставлять имя переменной и оператор :=.
2) Указав %% в функции это значит что имя переменной должно взяться из другой переменной.Пример:

var = 123
VarParent = var
fn(%VarParent%)

fn(v)
{
	msgbox % v
}

3) Если указать без процентов скрипт посчитает это не как переменную а как простое число, если указать правильное имя  переменной, то это сработает:

var := 123 / 10
varNew:= Ceil(var)
msgbox %  varNew

Вот как будет правильно используя не цифровые имена переменных и с правильным ceil

var1 := 16
var2 := 138
var2 := Ceil(var2 / 10)
var1 -= var2
msgbox % var1

Так же результат вычитания можно выводить в 3ю переменную:
(вместо предпоследней строки)

var3 := var1- var2

16 (изменено: Alex_Lexon, 2016-05-27 21:07:26)

Re: AHK: Округление в минус.

teadrinker пишет:

Читайте этот пост. Ну, и главное, эту статью.

Alex_Lexon пишет:

Numpad4::
3 = 16
2 := 138
2/=10
Ceil(%2%)
3-=%2%
Sendinput {F6}/usedrugs %3%{Enter}
return

После такого скрипта перменная 3 становится 3, а мне в общем то надо 2...

Не помогло.

17

Re: AHK: Округление в минус.

Alex_Lexon пишет:

Не помогло.

Ну, не только прочитать нужно было, ещё и выводы сделать. Вот в предыдущем посте есть разъяснения, почитайте тоже. Если не помогает, приведите свой вариант, который не работает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: Округление в минус.

yalanne спасибо, помогло. Видимо использовал Ceil неправильно. Тему можно закрывать.