Перейти к основному содержимому

Тип «Число»

Тип Число представляет собой число произвольной точности с фиксированной точкой.

Значение типа Число может быть задано литералом одного из следующих видов:

  • Двоичное число: 0b{0|1}+.
  • Десятичное число: [+|-]{0..9}[.{0..9}].
  • Шестнадцатеричное число: 0x{0..9|a..f|A..F}+.

Число состоит из знака числа, а также целой и дробной частей, разделенных точкой. Если задается двоичное или шестнадцатеричное число, то для такого числа невозможно задание дробной части, так как такие числа могут быть только целыми.

Операции, определенные для значений типа Число, описаны в разделе Операции.

Пример работы с числами

пер А: Число
А = 15 // целое десятичное число
А = 3.141592654 // дробное десятичное число
А = 15/7 // выражение с использованием десятичных чисел
А = 0xff // шестнадцатеричное число
А = -0xff // отрицательное шестнадцатеричное число
А = 0b10101 // двоичное число

Форматирование чисел

Для форматирования чисел используется встроенный метод Представление(), который принимает как аргумент указанный формат и возвращает строку с числом в этом формате.

В примере ниже для числа 123.456 вызывается метод Представление(). Он представляет это число в формате 'Результат: '6.2, который передается этому методу как аргумент. Результат форматирования помещается в переменную б:

пер а: Число = 123.456
пер б = а.Представление("'Результат: '6.2")

Значение переменной б:

Результат: 123,46

При указании формата используется специальный синтаксис. Так, в примере выше форматная строка 'Результат: '6.2 состоит из следующих частей: 'Результат: ' — префикс, 6 — ширина, 2 — точность. Подробнее о синтаксисе форматных строк смотрите ниже.

Синтаксис форматной строки

В общем случае синтаксис форматной строки выглядит следующим образом: "['префикс'][флаги][ширина][.точность][специальные флаги]['суффикс']".

Вся форматная строка выделяется двойными кавычками. Префикс и суффикс указываются в отдельных одинарных кавычках (для экранирования). Являются необязательной частью форматной строки (могут не указываться). Необходимо, чтобы составляющие форматирующей части (флаги, ширина, точность, специальные флаги) следовали строго друг за другом в соответствии с синтаксисом.

Префикс

Текстовая часть форматной строки, которая добавляется перед отформатированным числом. Пример:

Для числа 123.123 применим форматную строку 'знач ='7.2. Получим: знач = 123.12.

При использовании символа ' (одинарная кавычка) в префиксе его необходимо экранировать другой одинарной кавычкой перед ним: '' (то есть две идущие подряд одинарные кавычки). Примеры:

Для числа 123.123 применим форматную строку 'знач'' ='7.2. Получим: знач' = 123.12.

Для числа 123.123 применим форматную строку 'Значение типа ''Число'' ='7.2. Получим: Значение типа 'Число' = 123.12.

Флаги

Используются непосредственно для форматирования выводимого числа. В отличие от специальных флагов определяются одним символом. При указании нескольких флагов указываются без разделительных знаков, могут указываться в произвольном порядке. При заполнении "свободного места", то есть разницы между исходными и указанными шириной/точностью, заполнитель по умолчанию — пробелы слева.

Список флагов

ФлагОписаниеПример
0Свободное место заполняется нулями слева. Несовместим с флагом -.Для числа 123.456 применим форматную строку 08.2. Получим: 00123,46.
-Свободное место заполняется пробелами справа. Несовместим с флагом 0.Для числа 123.456 применим форматную строку -7.2'$'. Получим: 123,46 $.
+Положительные числа выводятся со знаком +.Для числа 123.456 применим форматную строку +7.2. Получим: +123,46.
_Группировка целой части по 3 цифры, начиная с младшего разряда. По умолчанию разделителем групп является символ неразрывного пробела  .Для числа 123456789 применим форматную строку _10.2. Получим: 123 456 789,00.
(Отрицательные числовые значения заключаются в скобки и берутся по модулю. Пишутся без знака -.Для числа -123.456 применим форматную строку (6.2. Получим: (123,46).

Ширина

Определяет общую ширину числа после форматирования (без префикса и суффикса). Если ширина меньше полученного числа (с соблюдением всех флагов, включая специальные), то она динамически расширяется до ширины числа. Если ширина больше результата, то свободное место заполняется в соответствии с указанным флагом. Если ширина не указана, то она будет минимально возможной для вывода отформатированного числа. Примеры:

Для числа 123.123 укажем ширину 10. Получим:    123.123.

Для числа 123.123 укажем ширину 1. Получим: 123.123.

Точность

Определяет точность дробной части. Если указанная точность меньше, чем в исходном числе, то значение после десятичного разделителя округляется (по умолчанию: округление к ближайшему целому). Округление настраивается с помощью специального флага (ОК). Если указанная точность больше числа, то дробная часть дополняется нулями с конца. Если точность не указывается, то она соответствует точности исходного числа. Например:

Для числа 123.456 укажем точность .2. Получим: 123,46.

Специальные флаги

Синтаксис: специальный флаг=значение, где значение — это разделитель или режим округления. Используются непосредственно для форматирования выводимого числа. В отличие от обычных флагов определяются не одним символом, а выражением. При указании нескольких флагов разделяются точкой с запятой (;), могут указываться в произвольном порядке. От предыдущей части форматной строки (если есть) также отделяются точкой с запятой. Пример:

'значение='РД=.'$'.

Для удобства чтения допускается использование пробела (пробелов) для отделения специального флага от знака присваивания, но не допускается использование пробела после знака присваивания или после знака разделителя, так как в этом случае пробел будет восприниматься встроенным языком как собственно разделитель или часть разделителя. Пример:

'тест'(+_15.2; РГ =,; РД =.; ОК =ПВВ;'тест'.

Список специальных флагов

Специальный флагОписаниеПример
РГ"Разделитель групп". Определяет разделитель групп в целой части. Принимает как значение символ разделителя (или символ в Unicode). Ожидается только вместе с флагом _, включающим разделение по группам.Формат _;РГ=, для числа 123456789 даст результат 123,456,789.
РД"Разделитель дробной". Определяет разделитель между целой и дробной частями. Принимает как значение символ разделителя (или символ в Unicode).Формат РД=, для числа 123.456 даст результат 123,456.
ОК"Округление". Определяет режим округления. Ожидается только вместе с указанием точности. Принимает одно из значений перечисления ВидОкругления (по умолчанию: ПВВ) из таблицы ниже.См. таблицу ниже.
Список видов округления
Вид округленияОписаниеПример
ВНОкругление "Вниз". Округляет к меньшему ближайшему целому.Формат .0;ОК=ВН для числа 1.9 даст результат 1.
ВВОкругление "Вверх". Округляет к большему ближайшему целому.Формат .0;ОК=ВВ для числа 1.1 даст результат 2.
ПВНОкругление "ПоловинаВниз". Если < 5, округляет к меньшему ближайшему целому.Формат .0;ОК=ПВН для числа 1.5 даст результат 1.
ПВВОкругление "ПоловинаВверх". Если >= 5, округляет к большему ближайшему целому.Формат .0;ОК=ПВВ для числа 1.5 даст результат 2.

Суффикс

Суффикс — это текстовая часть форматной строки (набор символов), которая добавляется после отформатированного числа. Например:

Для числа 123.123 применим форматную строку -6.2' руб.'. Получим: 123,12 руб..

При использовании символа ' (одинарная кавычка) в суффиксе его необходимо экранировать другой одинарной кавычкой перед ним: '' (то есть две идущие подряд одинарные кавычки). Например:

Для числа 123.123 применим форматную строку -6.2' руб.'''. Получим: 123,12 руб.'.

Для числа 123.123 применим форматную строку 'Значение типа ''Цена'' = '-6.2' руб.'. Получим: Значение типа 'Цена' = 123,12 руб..

Именованные стандартные форматы

Для упрощения работы с форматными строками можно использовать именованные стандартные форматы, для которых используется следующий синтаксис:

"['префикс']именованный_формат['суффикс']"

Заменяют специальным словом форматную часть строки. Позволяют "стандартизировать" различные форматы чисел. Список именованных стандартных форматов:

Деньги

Денежный/финансовый формат. Соответствует форматной строке _.2. Пример:

Формат "Деньги' руб.'" для числа 123123.123 даст результат: 123 123,12 руб..

Основание

Представляет число в другой системе счисления по указанному основанию. Доступно только для целых чисел. Если исходное число не является целым, или его вещественная часть не эквивалента 0, выбрасывается соответствующая ошибка Перевод нецелых чисел в другие системы счисления не поддерживается.. Доступны системы счисления от 2 до 36. Целая часть не разбивается на группы. Ширина строки — минимально возможная для вывода числа в выбранной системе счисления. Для оснований от 2 до 9 возможны оба варианта синтаксиса: ОснованиеX или Основание0X. Пример:

Основание2 для числа 123 даст результат 1111011.

Процент

Процентный формат. Соответствует форматной строке _.2'%'. Пример:

Формат Процент для числа 0.12345 даст результат 12,35%.