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

CDbl

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

ClassicUO • Runtime API

Преобразует числовое значение или текст в Decimal.

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

CDbl(value:Any) -> Decimal

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

Параметры

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

Возвращает

Decimal — число double. При нераспознанном тексте возвращается 0. Дробная часть сохраняется в пределах точности double.

Поведение

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

Примеры

Пример 1. Десятичная строка

# Десятичная строка
#
# Преобразует числовое значение или текст в Decimal.
#
# Decimal — число double. При нераспознанном тексте возвращается 0. Дробная часть сохраняется в
# пределах точности double.

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

    VAR value = CDbl('12.75')
    UO.Print(STR(value))
END SUB

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

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

Пример 2. Экспоненциальная запись

# Экспоненциальная запись
#
# Преобразует числовое значение или текст в Decimal.
#
# Decimal — число double. При нераспознанном тексте возвращается 0. Дробная часть сохраняется в
# пределах точности double.

SUB Main()
    # e2 означает умножение на 10 в квадрате.
    # Ожидаемый результат: 150 (Decimal). value сохраняет возвращённое значение; Print только
    # выводит его.

    VAR value = CDbl('1.5e2')
    UO.Print(STR(value))
END SUB

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

  • e2 означает умножение на 10 в квадрате.
  • Ожидаемый результат: 150 (Decimal). value сохраняет возвращённое значение; Print только выводит его.

Пример 3. Обработать ошибочный ввод

# Обработать ошибочный ввод
#
# Преобразует числовое значение или текст в Decimal.
#
# Decimal — число double. При нераспознанном тексте возвращается 0. Дробная часть сохраняется в
# пределах точности double.

SUB Main()
    # text не является числом, поэтому выполняется ELSE.
    # Прямой вызов CDbl(text) дал бы 0 и не позволил бы отличить ошибку ввода от настоящего нуля.

    VAR text = 'invalid'
    IF IsNumeric(text) THEN
        UO.Print(STR(CDbl(text)))
    ELSE
        UO.Print('Not a number')
    END IF
END SUB

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

  • text не является числом, поэтому выполняется ELSE.
  • Прямой вызов CDbl(text) дал бы 0 и не позволил бы отличить ошибку ввода от настоящего нуля.