Число
Стд::Число Базовые типы: Форматируемое,Сравнимое |
Доступность: КлиентИСервер |
Десятичное число. Максимально допустимая разрядность числа 38 знаков.
Сравнение структурное.
Примеры
знч Двоичный = 0b11011
знч Десятичный = 27
знч Шестнадцатеричный = 0x1B
Литералы
- Двоичный: 0b{0|1}+
- Десятичный: [+|-]{0..9}[.{0..9}]
- Шестнадцатеричный: 0x{0..9|a..f|A..F}+
Арифметические операции
- Число + Число = Число (сложение)
- Число - Число = Число (вычитание)
- Число * Число = Число (умножение)
- Число / Число = Число (деление)
- Число % Число = Число (остаток от деления)
- Число ** Число = Число (возведение в степень)
- -Число = Число (унарный минус)
Приоритет операций (в порядке уменьшения):
- Выражения в круглых скобках
-
- (унарный минус)
- Операции *, /, %, **
- Операции +, -
Конструкторы
Число
Число(Строка: Строка) |
Доступность: КлиентИСервер |
Преобразует строковое представление в соответствующий экземпляр числа. Ожидается представление числа в формате десятичного литерала.
Методы
ВСтроку
Возвращает десятичное представление числа в формате литерала. Пример: "250000.50"
.
ВСтроку
Применим только к целым числам. Возвращает число в формате литерала, переведенное в заданную систему счисления. Доступны системы счисления от 2
до 36
. Примеры:
(134).ToString(4) -\> 2012
(134).ВСтроку(3) -\> 11222
Округлить
Округлить(Режим: РежимОкругления): Число |
Доступность: КлиентИСервер |
Перегрузка: Округлить(Разрядность: Число = 0, Режим: РежимОкругления = РежимОкругления.ПоловинаВверх): Число |
Возвращает число, округленное до целой части по правилу, заданному режимом округления Режим
.
Округлить
Округлить(Разрядность: Число = 0, Режим: РежимОкругления = РежимОкругления.ПоловинаВверх): Число |
Доступность: КлиентИСервер |
Перегрузка: Округлить(Режим: РежимОкругления): Число |
Возвращает число, округленное до требуемой разрядности Разрядность
по правилу, заданному режимом округления Режим
. Разрядность
определяет число знаков дробной части, до которых производится округление. Если параметр отрицательный, то число округляется до соответствующего разряда в целой части, начиная с младших разрядов.
Представление
Представление(): Строка |
Доступность: КлиентИСервер |
Переопределение: Представление |
Возвращает десятичное представление числа в следующем формате: 1) в качестве символа разделителя между дробной и целой частью выступает ","
(запятая); 2) в качестве символа разделителя групп в целой части (цифры группируются по 3, начиная с младшего разряда) выступает символ " "
(неразрывный пробел); 3) в дробной части выводятся все разряды дробной части, как в исходном числе (отсутствие точности).
Данный формат соответствует форматной строке "_"
.
Пример: “250 000,50”.
Представление
Представление(Формат: Строка): Строка |
Доступность: КлиентИСервер |
Переопределение: Представление |
Перегрузка: Представление(): Строка |
Возвращает десятичное представление числа, отформатированное в соответствии с форматной строкой Формат
.
Устройство форматной строки
Форматная строка состоит из 3 частей, следующих друг за другом непрерывно (без каких-либо символов разделителей): 1) префикс; 2) форматирующая часть, не может быть представлена пустой строкой; 3) суффикс.
Имеет следующий синтаксис:
"'префикс'форматирующая_часть'суффикс'"
Префикс и суффикс в форматной строке в обязательном порядке указываются в отдельных одинарных кавычках.
Префикс
Префикс — это непосредственно текст (какой-либо набор символов), который должен быть вставлен перед отформатированным числом. При использовании символа '
(одинарная кавычка) в префиксе его необходимо экранировать: ''
(две подряд идущие одинарные кавычки).
Примеры:
'val='
-> в итоговой строке префикс будет выглядеть, как val=
'''val='''
-> в итоговой строке префикс будет выглядеть, как 'val='
Форматирующая часть
Форматирующая часть состоит из четырёх частей:
[флаги][ширина][.точность][специальные флаги]
Все части должны идти в обязательном порядке друг за другом в соответствии с порядком, указанным выше.
Флаги
Флаги позволяют управлять форматом строки с обрабатываемым числом. Если необходимо указать несколько флагов — они указываются в любом порядке друг за другом без разделительных символов. Флаги могут не указываться в форматной строке.
“Свободное место” будет вычисляться по формуле: MAX(Заданная ширина строки (0, в случае если не задана) - Минимальная ширина для вывода отформатированного числа, 0). Иными словами — количество символов, которых не хватает в отформатированном числе до значения ширина. По умолчанию — свободное место заполняется пробелами слева.
| Флаг | Значение | |:—-:|:———————————————————————————————————————————————-:| | 0
| Свободное место будет заполнено нулями слева. Не совместим с флагом -
. | | -
| Свободное место будет заполнено пробелами справа. Не совместим с флагом 0
. | | +
| Положительные числа выводятся со знаком +
. | | _
| Группировка целой части по 3 цифры, начиная с младшего разряда. По умолчанию разделителем групп является символ неразрывного пробела “ ”. | | (
| Отрицательные числовые значения заключаются в скобки и берутся по модулю (пишутся без знака минус). |
Ширина
Данная часть форматной строки контролирует общую итоговую ширину вывода форматируемого числа (в данном значении не учитывается текст идущий в префиксе и суффиксе — он отдельно приписывается до и после строки, содержащей отформатированное число, соответственно). Если указанной ширины не хватает для вывода числа с соблюдением всех флагов, а также специальных флагов, то она динамически расширяется до минимально необходимой для вывода отформатированного числа. Если же ширина больше необходимой для вывода отформатированного числа, то свободное место заполняется в соответствии с введёнными флагами. Если флаги не указаны — свободное место будет заполнено пробелами слева. Если данный параметр не указан, то ширина строки будет минимально возможной для вывода отформатированного числа.
Примеры:
Для числа 1.234 применим форматную строку "6"
. Получим: “ 1,234”
Для числа 123123 применим форматную строку "1"
. Получим: “123123”
Точность
Эта часть форматной строки задаёт сколько цифр должно выводиться в дробной части числа. Если указанное количество цифр меньше, чем в исходном числе, то значение округляется в соответствии с режимом округления (по умолчанию — РежимОкругления.ПоловинаВверх). Режим округления может быть указан при помощи соответствующего специального флага ОК
. Если указанное количество цифр больше, чем количество цифр в дробной части форматируемого числа — дробная часть дополняется нулями с конца.
Пример: 1.2 с точностью 4
→ “1.2000”.
Если данный параметр не указан, то выводится столько цифр после запятой, сколько было в исходном числе.
Специальные флаги
Специальные флаги служат для кастомизации выводимого числа. Специальные флаги, как и обычные флаги, могут указываться в произвольном порядке, но обязательно должны отделяться друг от друга символом “;” (точка с запятой). Также они должны быть отделены от предыдущей части символом “;” (точка с запятой), кроме случая, когда в форматирующей части строки нет никаких подчастей, кроме специальных флагов — тогда допускается не указывать символ разделитель.
Пример: "'val='РД=.'$'"
.
Синтаксис специальных флагов допускает использование пробелов для отделения названия специального флага от знака разделителя и знака присваивания.
Пример: "'test'(+_15.2; РГ =,; РД =.; ОК =ПВВ;'test'"
.
Однако, недопустимо отделение значения специального флага от знака присваивания и знака разделителя.
Нельзя: "'test'(+_15.2; РГ = , ;'test'"
В обязательном порядке подряд последовательно должны идти знак присваивания (=), значение специального флага(символ, либо режим округления для ОК), знак разделитель(;).
Специальные флаги могут не указываться в форматной строке.
| Англоязычное название специального флага | Русскоязычное название специального флага | Значение | |:—————————————-:|:—————————————–:|:——————————————————————————————————————————————————————————————————————————————————————————————:| | "DG=X"
| "РГ=X"
| Образовано от разделитель групп (delimiter group). Ввод знака-разделителя групп в целой части (вместо X
ожидается какой-либо символ (либо код символа в формате \uкод
)). Данный специальный флаг ожидается только вместе с флагом "_"
, включающим разделение по группам целой части. | | "DF=X"
| "РД=X"
| Образовано от разделитель дробной (delimiter fractional). Ввод знака-разделителя между целой и дробной частью (вместо X
ожидается какой-либо символ (либо код символа в формате \uкод
)). | | "RD=MODE"
| "ОК=РЕЖИМ"
| Флаг-режим округления. |
Специальный флаг ОК
имеет 4 режима округления, которые совпадают с режимами, введёнными перечислением РежимОкругления
, и отличаются от них лишь сокращёнными названиями.
| Англоязычное название специального флага | Русскоязычное название специального флага | Значение | |:—————————————-:|:—————————————–:|:—————————————————————————————————————-:| | "RD=DN"
| "ОК=ВН"
| Аналогичен РежимОкругления.Вниз
/ RoundingMode.Down
. Округление к меньшему по модулю. | | "RD=UP"
| "ОК=ВВ"
| Аналогичен РежимОкругления.Вверх
/ RoundingMode.Up
. Округление к большему по модулю. | | "RD=HDN"
| "ОК=ПВН"
| Аналогичен РежимОкругления.ПоловинаВниз
/ RoundingMode.HalfDown
. Половинное округление к меньшему по модулю. | | "RD=HUP"
| "ОК=ПВВ"
| Аналогичен РежимОкругления.ПоловинаВверх
/ RoundingMode.HalfUp
. Половинное округление к меньшему по модулю. |
Если специальный флаг, задающий режим округления, не указан — режимом округления является РежимОкругления.ПоловинаВверх
.
Суффикс
Суффикс — это непосредственно текст (какой-либо набор символов), который должен быть вставлен после форматированного числа. При использовании символа "'"
(одинарная кавычка) в суффиксе его необходимо экранировать: "''"
(две подряд идущие одинарные кавычки).
Примеры:
'$' -\> в итоговой строке суффикс будет выглядеть, как "$"
'''$''' -\> в итоговой строке суффикс будет выглядеть, как "'$'"
Именованные стандартные форматы
Для упрощения работы с форматными строками созданы именованные стандартные форматы, имеющие следующий синтаксис:
"'префикс'именованный_стандартный_формат'суффикс'"
Они заменяют форматирующую часть строки и упрощают создание форматных строк.
| Англоязычное название стандартного формата | Русскоязычное название стандартного формата | Описание формата | |:——————————————:|:——————————————-:|:—————————————————————————————————————————————————————————————————————————————————————————————————————————:| | Money
| Деньги
| Именованный формат соответствует форматной строке "_.2"
| | RadixXX
| ОснованиеXX
| Именованный формат позволяет переводить числа в другие системы счисления. Данный стандартный именованный формат применим только к целым числам. Перевод доступен в системы счисления от 2 до 36. Целая часть не разбивается на группы. Ширина строки - минимально возможная для вывода числа в выбранной системе счисления. | | Percent
| Процент
| Число домножается на 100 и выводится в соответствии с форматной строкой "_.2'%'"
|
Примеры использования стандартных именованных форматов:
| Число | Пример применения стандартного формата в форматной строке(RU) | Пример применения стандартного формата в форматной строке (EN) | Вывод | |:———-:|:————————————————————-:|:————————————————————–:|:————-:| | 123123.123 | "Деньги'$'"
| "Money'$'
| “123 123,12$” | | 123 | "Основание5"
| "Radix5"
| “443” | | 0.234 | "Процент"
| "Percent"
| “23,4%” |
Примеры
Число | Форматная строка (EN) | Форматная строка (RU) | Разбор форматной строки | Результат |
---|---|---|---|---|
1236.367 | "8.2" | "8.2" | " - начало форматной строки; 8 - количество символов в итоговом выводе(ширина); .2 - количество цифр в дробной части; " - конец форматной строки | ” 1236,37” |
1236.367 | "5.2" | "5.2" | " - начало форматной строки; 5 - количество символов в итоговом выводе(ширина). В данном примере ширины не хватает, чтобы записать число. Она будет динамически расширена; .2 - количество цифр в дробной части; " - конец форматной строки | “1236,37” |
1236.367 | ".2;DF=." | ".2;РД=." | " - начало форматной строки; .2 - количество цифр в дробной части; РД=. - специальный флаг обозначающий ввод пользовательского разделителя между дробной и целой частью - в данном случае задан “.” (точкой); " - конец форматной строки | “1 236.37” |
1236.367 | "_.2;D G=,;DF=." | "_.2;РГ=,;РД=." | " - начало форматной строки; _ - флаг, обозначающий группировку целой части по 3 цифры, начиная с младшего разряда; .2 - количество цифр в дробной части; РГ=, - специальный флаг обозначающий ввод пользовательского разделителя между группами в целой части - в данном случае задан “,” (запятой); РД=. - специальный флаг обозначающий ввод пользовательского разделителя между дробной и целой частью - в данном случае задан “.” (точкой); " - конец форматной строки | “1,236.37” |
1236.367 | "_.2" | "_.2" | " - начало форматной строки; _ - флаг, обозначающий группировку целой части по 3 цифры, начиная с младшего разряда; .2 - количество цифр в дробной части; " - конец форматной строки | “1 236,37” |
1234567 | "0_11;DG=_" | "0_11;РГ=_" | " - начало форматной строки; 0 - флаг, обозначающий заполнение пустых мест в строке нулями; _ - флаг, обозначающий группировку целой части по 3 цифры, начиная с младшего разряда; 11 - количество цифр в итоговом выводе(ширина); РГ=_ - специальный флаг обозначающий ввод пользовательского разделителя между группами в целой части - в данном случае задан “_” (нижним подчеркиванием); " - конец форматной строки | “001_234_567” |
1234567 | "011" | "011" | " - начало форматной строки; 0 - флаг, обозначающий заполнение пустых мест в строке нулями; 11 - количество символов в итоговом выводе(ширина); " - конец форматной строки | “00001234567” |
1234567.123 | "+_.0;DG=+" | "+_.0;РГ=+" | " - начало форматной строки; + - флаг, обозначающий вывод положительных чисел со знаком “+”; _ - флаг, обозначающий группировку целой части по 3 цифры, начиная с младшего разряда; .0 - количество цифр в дробной части (в данном случае показывает, что будет выводиться целое число); РГ=+ - специальный флаг обозначающий ввод пользовательского разделителя между группами в целой части - в данном случае задан “+” (знаком плюс); " - конец форматной строки | “+1+234+567” |
123456.123 | "_11.2;DG=,;DF=." | "_11.2;РГ=,;РД=." | " - начало форматной строки; _ - флаг, обозначающий группировку целой части по 3 цифры, начиная с младшего разряда; 11 - количество символов в итоговом выводе(ширина); .2 - количество цифр в дробной части; РГ=, - специальный флаг обозначающий ввод пользовательского разделителя между группами в целой части - в данном случае задан “,” (запятой); РД=. - специальный флаг обозначающий ввод пользовательского разделителя между дробной и целой частью - в данном случае задан “.” (точкой); " - конец форматной строки | ” 123,456.12” |
1236.367 | "'val='_.2;DG=,;DF=.'$'" | "'val='_.2;РГ=,;РД=.'$'" | " - начало форматной строки; ‘ - начало префикса; val= - префикс; ' - конец префикса; _ - флаг, обозначающий группировку целой части по 3 цифры, начиная с младшего разряда; .2 - количество цифр в дробной части; РГ=, - специальный флаг обозначающий ввод пользовательского разделителя между группами в целой части - в данном случае задан “,” (запятой); РД=. - специальный флаг обозначающий ввод пользовательского разделителя между дробной и целой частью - в данном случае задан “.” (точкой); ' - начало суффикса; $ - суффикс; ' - конец суффикса; " - конец форматной строки | “val=1,236.37$” |
123.123 | "-7.2'$'" | "-7.2'$'" | " - начало форматной строки; - - флаг, обозначающий что свободное место будет заполнено пробелами справа; 7 - количество символов в итоговом выводе(ширина); .2 - количество цифр в дробной части; ' - начало суффикса; $ - суффикс; ' - конец суффикса; " - конец форматной строки | “123,12 $” |
-123123.321 | "(.2" | "(.2" | " - начало форматной строки; ( - флаг, обозначающий что отрицательное число будет заключено в скобки, и его значение будет взято по модулю; .2 - количество цифр в дробной части; " - конец форматной строки | “(123123,32)” |
1236.367 | "'val='_.2;DG=,;DF=.;RD=DN'$'" | "'val='_.2;РГ=,;РД=.;ОК=ВН'$'" | " - начало форматной строки; ' - начало префикса; val= - префикс; ' - конец префикса; _ - флаг, обозначающий группировку целой части по 3 цифры, начиная с младшего разряда; .2 - количество цифр в дробной части; РГ=, - специальный флаг обозначающий ввод пользовательского разделителя между группами в целой части - в данном случае задан “,” (запятой); РД=. - специальный флаг обозначающий ввод пользовательского разделителя между дробной и целой частью - в данном случае задан “.” (точкой); ОК=ВН - специальный флаг со значением округления к меньшему по модулю; ' - начало суффикса; $ - суффикс; ' - конец суффикса; " - конец форматной строки | “val=1,236.36$” |
ЦелаяЧасть
ЦелаяЧасть(): Число |
Доступность: КлиентИСервер |
Возвращает целую часть числа.