1

Тема: AHK: Количество знаков после запятой

На вход поступает целое число, либо число с плавающей точкой. Скрипт должен определить, не превышает ли количество знаков после точки  заданное количество (к примеру 4).
Существуют ли стандартные способы?

2 (изменено: Malcev, 2018-04-08 16:17:38)

Re: AHK: Количество знаков после запятой

Думаю нет. Только типа такого что-то делать:

digit := 3.01, maxcount := 2

If InStr(digit, ".") and (StrLen(RTrim(digit, "0")) - InStr(digit, ".") > maxcount)
   msgbox Not Ok
else
   msgbox Ok

3

Re: AHK: Количество знаков после запятой

digit := 3.23, maxcount := 2 
MsgBox % !InStr(digit, ".", 0, (maxcount + 1) * -1)  ; 1 - не превышает
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Количество знаков после запятой

В таком случае показывает неверный результат:

digit := 3.000, maxcount := 2 
MsgBox % !InStr(digit, ".", 0, (maxcount + 1) * -1)  ; 1 - не превышает

5

Re: AHK: Количество знаков после запятой

Почему? Ноль же возвращает, количество после точки больше 2.

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

6

Re: AHK: Количество знаков после запятой

3.000 - это целое число.

7

Re: AHK: Количество знаков после запятой

Про замыкающие нули не видел в задании ни слова.

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

8

Re: AHK: Количество знаков после запятой

Или тут ноль в конце уже должен учитыватся?

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

9

Re: AHK: Количество знаков после запятой

Да, требуется учесть все цифры после точки, в том числе ноль.

10 (изменено: svoboden, 2018-04-08 19:43:07)

Re: AHK: Количество знаков после запятой

Malcev, может, я чего не понимаю, но у меня выводит "Ок", если число будет таким:

entrance := 3.130, count := 2

11

Re: AHK: Количество знаков после запятой

ypppu пишет:

Да, требуется учесть все цифры после точки, в том числе ноль.

Ну тогда 3 пост.

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

12

Re: AHK: Количество знаков после запятой

svoboden пишет:

Malcev, может, я чего не понимаю, но у меня выводит "Ок", если число будет таким:

entrance := 3.130, count := 2

В моём варианте нули идущие в конце дробной части подчищаются, поэтому выводит OK.

13

Re: AHK: Количество знаков после запятой

В моём случае полностью подошёл вариант от serzh82saratov.

14

Re: AHK: Количество знаков после запятой

Извините, можно с помощью ahk обрезать и оставить только два знака после запятой.
Пример 123,123 = 123,12
0,234 = 0,23

15

Re: AHK: Количество знаков после запятой

str := "0,234"
MsgBox, % newStr := RegExReplace(str, ",\d\d\K\d+")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Количество знаков после запятой

Может так же Format() пригодиться, если речь всё же о числе с плавающей точкой.

MsgBox % Format("{:0.2f}", 123.12345678)

17

Re: AHK: Количество знаков после запятой

Спасибо всем.

InputBox, UserInput,
str := % UserInput
MsgBox, % newStr := RegExReplace(str, ",\d\d\K\d+")

Работает как надо.

18

Re: AHK: Количество знаков после запятой

smol пишет:

str := % UserInput

Тут процент не нужен.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)