API CLng - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

CLng

Оглавление · Алфавитный указатель · BASIC built-ins

ClassicUO • Runtime API

Округляет до ближайшего целого, ровно половину — от нуля.

Точный синтаксис

CLng(value:Any) -> Integer

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

  • value — Число Integer/Decimal или числовая строка с точкой и необязательной экспонентой, например "-1.25e2". Преобразование не зависит от языка интерфейса. Нераспознанная строка, Unit, Array и Object преобразуются в 0. Для пользовательского ввода сначала проверяйте IsNumeric. Используйте конечные значения, результат которых находится в диапазоне -2147483648..2147483647.

Возвращает

Integer — результат преобразования в знаковое 32-битное целое. Округляет до ближайшего целого, ровно половину — от нуля. Название CLng не означает 64-битный long: в этом runtime результат остаётся 32-битным. Нечисловой текст даёт 0. Значения за пределами диапазона и NaN/Infinity не подходят для этого преобразования.

Поведение

  • Вычисляется локально, без ожидания ответа сервера.
  • Decimal в этом языке хранится как double: возможна погрешность двоичной арифметики. Это не десятичный финансовый тип .NET decimal.

Примеры

Пример 1. Положительная половина

# Положительная половина
#
# Округляет до ближайшего целого, ровно половину — от нуля.
#
# Integer — результат преобразования в знаковое 32-битное целое. Округляет до ближайшего целого,
# ровно половину — от нуля. Название CLng не означает 64-битный long: в этом runtime результат
# остаётся 32-битным. Нечисловой текст даёт 0. Значения за пределами диапазона и NaN/Infinity не
# подходят для этого преобразования.

SUB Main()
    # value=2.5 — положительное дробное число.
    # Ожидаемый результат: 3. value сохраняет возвращённое значение; Print только выводит его.

    VAR value = CLng(2.5)
    UO.Print(STR(value))
END SUB

Разбор параметров и выполнения:

  • value=2.5 — положительное дробное число.
  • Ожидаемый результат: 3. value сохраняет возвращённое значение; Print только выводит его.

Пример 2. Отрицательная половина

# Отрицательная половина
#
# Округляет до ближайшего целого, ровно половину — от нуля.
#
# Integer — результат преобразования в знаковое 32-битное целое. Округляет до ближайшего целого,
# ровно половину — от нуля. Название CLng не означает 64-битный long: в этом runtime результат
# остаётся 32-битным. Нечисловой текст даёт 0. Значения за пределами диапазона и NaN/Infinity не
# подходят для этого преобразования.

SUB Main()
    # value=-2.5 — отрицательное дробное число.
    # Ожидаемый результат: -3. value сохраняет возвращённое значение; Print только выводит его.

    VAR value = CLng(-2.5)
    UO.Print(STR(value))
END SUB

Разбор параметров и выполнения:

  • value=-2.5 — отрицательное дробное число.
  • Ожидаемый результат: -3. value сохраняет возвращённое значение; Print только выводит его.

Пример 3. Проверить текст перед преобразованием

# Проверить текст перед преобразованием
#
# Округляет до ближайшего целого, ровно половину — от нуля.
#
# Integer — результат преобразования в знаковое 32-битное целое. Округляет до ближайшего целого,
# ровно половину — от нуля. Название CLng не означает 64-битный long: в этом runtime результат
# остаётся 32-битным. Нечисловой текст даёт 0. Значения за пределами диапазона и NaN/Infinity не
# подходят для этого преобразования.

SUB Main()
    # text — входная строка. IsNumeric проверяет распознавание числовой записи.
    # amount=13. IsNumeric не проверяет диапазон int32; здесь значение заведомо в его пределах.

    VAR text = '12.6'
    IF IsNumeric(text) THEN
        VAR amount = CLng(text)
        UO.Print(STR(amount))
    ELSE
        UO.Print('Numeric text required')
    END IF
END SUB

Разбор параметров и выполнения:

  • text — входная строка. IsNumeric проверяет распознавание числовой записи.
  • amount=13. IsNumeric не проверяет диапазон int32; здесь значение заведомо в его пределах.