Skip to content

API Round

Codex edited this page Sep 19, 2026 · 4 revisions

Round

Оглавление · Алфавитный указатель · 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.

Примеры

Пример 1. Половина к чётному

# Половина к чётному
#
# Округляет до заданного количества знаков после точки, половинук ближайшему чётному.
#
# 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 только выводит его.

Пример 2. Два знака после точки

# Два знака после точки
#
# Округляет до заданного количества знаков после точки, половинук ближайшему чётному.
#
# 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 только выводит его.

Пример 3. Сравнить с CInt

# Сравнить с CInt
#
# Округляет до заданного количества знаков после точки, половинук ближайшему чётному.
#
# Decimalокруглённое double, в том числе в форме с одним аргументом, чья метадата объявляет
# Any. Round(2.5)=2 и Round(3.5)=4. Двоичное представление дроби может влиять на значения возле
# половины.

SUB Main()
    # Обе команды получают -2.5. У Round правило ToEven, у CIntAwayFromZero.
    # Результаты -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). Выбирайте правило округления осознанно.

Clone this wiki locally