-
Notifications
You must be signed in to change notification settings - Fork 0
API Round
Codex edited this page Sep 19, 2026
·
4 revisions
Оглавление · Алфавитный указатель · BASIC built-ins
ClassicUO • Runtime API
Округляет до заданного количества знаков после точки, половину — к ближайшему чётному.
Round(value:Any) -> Any
Round(number:Any, digits:Any) -> Decimal
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
value / number— Число Integer/Decimal или числовая строка с точкой и необязательной экспонентой, например "-1.25e2". Преобразование не зависит от языка интерфейса. Нераспознанная строка, Unit, Array и Object преобразуются в 0. Для пользовательского ввода сначала проверяйте IsNumeric. В форме с одним аргументом параметр называется value, в форме с двумя — number. -
digits— Число знаков после точки. Преобразуется в Integer, затем ограничивается диапазоном 0..15. Без аргумента — 0. Отрицательное значение означает 0 знаков, а не округление до десятков.
Decimal — округлённое double, в том числе в форме с одним аргументом, чья метадата объявляет Any. Round(2.5)=2 и Round(3.5)=4. Двоичное представление дроби может влиять на значения возле половины.
- Вычисляется локально, без ожидания ответа сервера.
- Decimal в этом языке хранится как double: возможна погрешность двоичной арифметики. Это не десятичный финансовый тип .NET decimal.
# Половина к чётному
#
# Округляет до заданного количества знаков после точки, половину — к ближайшему чётному.
#
# Decimal — округлённое double, в том числе в форме с одним аргументом, чья метадата объявляет
# Any. Round(2.5)=2 и Round(3.5)=4. Двоичное представление дроби может влиять на значения возле
# половины.
SUB Main()
# value=2.5, digits отсутствует и равен 0.
# Ожидаемый результат: 2. value сохраняет возвращённое значение; Print только выводит его.
VAR value = Round(2.5)
UO.Print(STR(value))
END SUBРазбор параметров и выполнения:
- value=2.5, digits отсутствует и равен 0.
- Ожидаемый результат: 2. value сохраняет возвращённое значение; Print только выводит его.
# Два знака после точки
#
# Округляет до заданного количества знаков после точки, половину — к ближайшему чётному.
#
# Decimal — округлённое double, в том числе в форме с одним аргументом, чья метадата объявляет
# Any. Round(2.5)=2 и Round(3.5)=4. Двоичное представление дроби может влиять на значения возле
# половины.
SUB Main()
# number=12.375 точно представимо в double, digits=2.
# Ожидаемый результат: 12.38. value сохраняет возвращённое значение; Print только выводит его.
VAR value = Round(12.375, 2)
UO.Print(STR(value))
END SUBРазбор параметров и выполнения:
- number=12.375 точно представимо в double, digits=2.
- Ожидаемый результат: 12.38. value сохраняет возвращённое значение; Print только выводит его.
# Сравнить с CInt
#
# Округляет до заданного количества знаков после точки, половину — к ближайшему чётному.
#
# Decimal — округлённое double, в том числе в форме с одним аргументом, чья метадата объявляет
# Any. Round(2.5)=2 и Round(3.5)=4. Двоичное представление дроби может влиять на значения возле
# половины.
SUB Main()
# Обе команды получают -2.5. У Round правило ToEven, у CInt — AwayFromZero.
# Результаты -2 (Decimal) и -3 (Integer). Выбирайте правило округления осознанно.
VAR rounded = Round(-2.5)
VAR integer = CInt(-2.5)
UO.Print(STR(rounded) + ' / ' + STR(integer))
END SUBРазбор параметров и выполнения:
- Обе команды получают -2.5. У Round правило ToEven, у CInt — AwayFromZero.
- Результаты -2 (Decimal) и -3 (Integer). Выбирайте правило округления осознанно.
ClassicUO - Bad Newbie & Basic IDE Edition