Тип «Число»
Тип Число представляет собой число произвольной точности с фиксированной точкой.
- Двоичное число:
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
. - Флаги
- Используются непосредственно для форматирования выводимого числа. В отличие
от специальных флагов определяются одним символом. При указании нескольких
флагов указываются без разделительных знаков, могут указываться в
произвольном порядке. При заполнении "свободного места", то есть разницы
между исходными и указанными шириной/точностью, заполнитель по умолчанию —
пробелы слева. Список флагов:
- 0
- Свободное место заполняется нулями слева. Несовместим с флагом
-
. Пример: - -
- Свободное место заполняется пробелами справа. Несовместим с
флагом
0
. Пример: - +
- Положительные числа выводятся со знаком
+
. Пример: - _
- Группировка целой части по 3 цифры, начиная с младшего разряда.
По умолчанию разделителем групп является символ неразрывного
пробела
- (
- Отрицательные числовые значения заключаются в скобки и берутся
по модулю. Пишутся без знака
-
. Пример:
- Ширина
-
Определяет общую ширину числа после форматирования (без префикса и суффикса). Если ширина меньше полученного числа (с соблюдением всех флагов, включая специальные), то она динамически расширяется до ширины числа. Если ширина больше результата, то свободное место заполняется в соответствии с указанным флагом. Если ширина не указана, то она будет минимально возможной для вывода отформатированного числа. Примеры:
Для числа
123.123
укажем ширину10
. Получим:123.123
.Для числа
123.123
укажем ширину1
. Получим:123.123
. - Точность
-
Определяет точность дробной части. Если указанная точность меньше, чем в исходном числе, то значение после десятичного разделителя округляется (по умолчанию: округление к ближайшему целому). Округление кастомизируется с помощью специального флага (
ОК
). Если указанная точность больше числа, то дробная часть дополняется нулями с конца. Если точность не указывается, то она соответствует точности исходного числа. Например:Для числа
123.456
укажем точность.2
. Получим:123,46
. - Специальные флаги
- Синтаксис: специальный флаг=значение, где значение это разделитель
или режим округления. Используются непосредственно для форматирования
выводимого числа. В отличие от обычных флагов определяются не одним
символом, а выражением. При указании нескольких флагов разделяются точкой с
запятой (
;
), могут указываться в произвольном порядке. От предыдущей части форматной строки (если есть) также отделяются точкой с запятой. Пример:'значение='РД=.'$'
. Для удобства чтения допускается использование пробела (пробелов) для отделения специального флага от знака присваивания, но не допускается использование пробела после знака присваивания или после знака разделителя, так как в этом случае пробел будет восприниматься встроенным языком как собственно разделитель или часть разделителя. Пример:'тест'(+_15.2; РГ =,; РД =.; ОК =ПВВ;'тест'
. Список специальных флагов: - Суффикс
-
Суффикс — это текстовая часть форматной строки (набор символов), которая добавляется после отформатированного числа. Например:
Для числа
123.123
применим форматную строку"-6.2' руб.'"
. Получим:123,12 руб.
При использовании символа
'
(одинарная кавычка) в суффиксе его необходимо экранировать:''
(две идущие подряд одинарные кавычки). Например:Для числа
123.123
применим форматную строку"-6.2' руб.'''"
. Получим:123,12 руб.'
Именованные стандартные форматы
Для упрощения работы с форматными строками можно использовать именованные стандартные форматы, при которых используется следующий синтаксис:
"['префикс']именованный_формат['суффикс']"
- Деньги
- Денежный/финансовый формат. Соответствует форматной строке
_.2
. Пример: - Основание
-
Представляет число в другой системе счисления по указанному основанию. Доступно только для целых чисел. Если исходное число не является целым, или его вещественная часть не эквивалента 0, выбрасывается соответствующая ошибка
IllegalArgumentBslException
. Доступны системы счисления от 2 до 36. Целая часть не разбивается на группы. Ширина строки — минимально возможная для вывода числа в выбранной системе счисления. Для оснований от 2 до 9 возможны оба варианта синтаксиса:ОснованиеX
илиОснование0X
. Пример:Основание2
для числа123
даст результат1111011
. - Процент
- Процентный формат. Соответствует форматной строке
_.2'%'
. Пример: