Тема: AHK: Количество знаков после запятой
На вход поступает целое число, либо число с плавающей точкой. Скрипт должен определить, не превышает ли количество знаков после точки заданное количество (к примеру 4).
Существуют ли стандартные способы?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
На вход поступает целое число, либо число с плавающей точкой. Скрипт должен определить, не превышает ли количество знаков после точки заданное количество (к примеру 4).
Существуют ли стандартные способы?
Думаю нет. Только типа такого что-то делать:
digit := 3.01, maxcount := 2
If InStr(digit, ".") and (StrLen(RTrim(digit, "0")) - InStr(digit, ".") > maxcount)
msgbox Not Ok
else
msgbox Ok
digit := 3.23, maxcount := 2
MsgBox % !InStr(digit, ".", 0, (maxcount + 1) * -1) ; 1 - не превышает
В таком случае показывает неверный результат:
digit := 3.000, maxcount := 2
MsgBox % !InStr(digit, ".", 0, (maxcount + 1) * -1) ; 1 - не превышает
Почему? Ноль же возвращает, количество после точки больше 2.
3.000 - это целое число.
Про замыкающие нули не видел в задании ни слова.
digit := 0.340, maxcount := 2
MsgBox % Round(digit + 0, maxcount) = digit
Или тут ноль в конце уже должен учитыватся?
Да, требуется учесть все цифры после точки, в том числе ноль.
Malcev, может, я чего не понимаю, но у меня выводит "Ок", если число будет таким:
entrance := 3.130, count := 2
Да, требуется учесть все цифры после точки, в том числе ноль.
Ну тогда 3 пост.
Malcev, может, я чего не понимаю, но у меня выводит "Ок", если число будет таким:
entrance := 3.130, count := 2
В моём варианте нули идущие в конце дробной части подчищаются, поэтому выводит OK.
В моём случае полностью подошёл вариант от serzh82saratov.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться