1

Тема: AHK: Математика

Всем привет. Хочу научиться считать в ахк. К примеру есть переменные:
х1:=5,55
х2:=7,77
Мне нужно умножить, сложить, отнять числа с плавающей точкой: 5,55*7,77=
Пусть будет получена третья переменная с результатом, который необходимо округлить до сотых.
Типа что то такого:

х3:=(%х1%+%х2%)

2

Re: AHK: Математика

В программировании для отделения дробной части используется не запятая, а точка.

x1 := 5.55
x2 := 7.77
x3 := x1 + x2
MsgBox, % x3
MsgBox, % Round(x3, 2)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Математика

teadrinker пишет:

не запятая, а точка

теперь все стало на свои места спасибо.

А если в переменных находятся числа с плавающей запятой, то мне лучше использовать  RegExReplace для замены запятой на точку, произвести необходимые расчеты а потом на выводе конечного результата заменить опять точку на запятую? Или как будет правильней?

4

Re: AHK: Математика

Если исходные данные с запятой, и на выходе нужно тоже с запятой, тогда проще заменять с помощью StrReplace().

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

5 (изменено: Leone_Galante, 2020-03-19 03:26:04)

Re: AHK: Математика

что я делаю не так?

f6::
a := 12311111
b := 43,306
c := 500
StringReplace, b1, b, ",",.,1
MsgBox, % b1      
Return

и так пробовал

f6::
a := 12311111
b := 43,306
c := 500
StringReplace, b1, b, ",",".",1
MsgBox, % b1      
Return

выдает только целое число 43

6

Re: AHK: Математика

b := "43,306" ; строка должна быть в кавычках, это не число, так как используется запятая
StringReplace, b1, b, `,, . ; эта команда устаревшая, запятая экранируется знаком `
MsgBox, % b1
; лучше так
MsgBox, % b1 := StrReplace(b, ",", ".")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: Leone_Galante, 2020-03-19 13:50:31)

Re: AHK: Математика

teadrinker спасибо большое. Разобрался.