Формат преобразования вещественных чисел в строку |
Форматный перевод вещественных чисел в строку предназначен для вывода текстового представления числа и в основном используется для вывода результатов, связанных с деньгами.
Форматируемое число делится на три части: знак числа, целая часть числа, дробная часть числа. Каждая из них появляется в выходной строке в том месте и в том виде, как это специфицировано в строке формата преобразования. Если, например, в строке формата преобразования не поставить символ вывода знака числа, знак никогда не появится в строке результата. См. строку 2 таблицы с примерами форматирования. Если, наоборот, некоторую часть числа указать в строке формата несколько раз, то и в строке результата она появится несколько раз. См. строку 32 таблицы с примерами форматирования.
Символы формата для вывода цифрового представления числа ("6", "7", "8" и "9") могут чередоваться с обычными, неуправляющими символами. Если символы формата для вывода цифрового представления целой или дробной частей числа разделены другим символом формата (кроме "7" после "6" и "9" после "8"), то соответствующая часть числа выводится заново. См. строку 32 таблицы с примерами форматирования - символы "6" сначала разделены пробелом, а затем символом "4".
Ниже дано описание символов формата для этой функции:
2 |
Текстовое представление дробной части без текстового представления порядка дробной части. Необходимо, когда дробная часть имеет свое собственное название. Например, сотая доля рубля называется копейка. |
3 |
Вывести знак числа (плюс или минус): [<p>|<m>]3. Для положительных чисел выводится текст <p>, для отрицательных - <m>. Конструкция [<p>|<m>] не является обязательной. Если она отсутствует, то по умолчанию знак числа выводится в виде "+" или "-". Если нужно выводить только отрицательный знак, необходимо указать [|-] перед символом 3 в формате. См. строки 1 - 8 таблицы с примерами форматирования. |
4 |
Текстовое представление целой части. По умолчанию не округляет, берет только целую часть числа. Для получения округленного значения необходимо использовать "\0p". |
5 |
Текстовое представление дробной части. В него входит и текстовое представление порядка дробной части (десятые, сотые, тысячные и т.д.). Обратите внимание на "двадцать две сотых коп." в строке 34 таблицы с примерами форматирования. |
6 |
Необязательная цифра целой части. Если целая часть не помещается в формат, выводятся звездочки "*" по количеству цифр в формате. Если целая часть равна 0, ноль выводится всегда. Лидирующие нули не выводятся. |
7 |
Обязательная цифра целой части. Не может быть использована непосредственно перед символом формата 6. Если целая часть не помещается в формат, выводятся звездочки "*" по количеству цифр в формате. Цифра выводится всегда, включая лидирующие нули. |
8 |
Обязательная цифра дробной части. Выводятся только цифры дробной части согласно формату, остальные - отбрасываются без округления. Для получения округленного значения необходимо использовать "\Np". При необходимости число дополняется справа нулями. |
9 |
Необязательная цифра дробной части. Не может быть использована непосредственно перед символом формата 8. Выводятся только цифры дробной части согласно формату, остальные - отбрасываются без округления. Для получения округленного значения необходимо использовать "\Np". Незначащие нули справа не выводятся. |
^ |
Обязательный разделитель. Если в формате стоит 9 (необязательный 0 в дробной части), а дробной части нет, то прешествующая точка выводится. См. строку 38 таблицы с примерами форматирования. По умолчанию в качестве символа разделителя используется точка. Символ разделителя может быть переопределен управляющим символом D. Доступно начиная с Атлантис 3.03.23 и Атлантис 5.1. |
~ |
Необязательный разделитель. Если в формате стоит 9 (необязательный 0 в дробной части), а дробной части нет, то прешествующая точка подавляется. См. строки 36 и 37 таблицы с примерами форматирования. Доступно начиная с Атлантис 3.03.23 и Атлантис 5.1. |
Управляющие символы вводятся после обратного слеша "\" и заключаются в кавычки:
D |
Символ разделителя целой и дробной частей: \D<символ> или \d<символ>. Доступно начиная с Атлантис 3.03.23 и Атлантис 5.1. См. строку 39 таблицы с примерами форматирования. |
E |
Ввод разрядности: \<число>E или \<число>e. Десятичная точка сдвигается на <число> позиций влево (см. строку 15 таблицы с примерами форматирования). Если <число> отрицательное, то десятичная точка все равно сдвигается влево. |
F |
Женский род: \F или \f (например: "Две копейки") |
M |
Мужской род: \M или \m (например: "Два рубля") |
N |
Средний род: \N или \n (например: "Одно окно"). Доступно начиная с Атлантис 5.1. |
P |
Точность округления: \<знак округления><число>P или \<знак округления><число>p. Положительный знак соответствует округлению до указанного количества знаков в дробной части. Отрицательный знак соответствует округлению до указанного количества нулей в целой части. Например, "-1" - до десяти, "-2" - до ста, "-6" - до миллиона и т.п. См. строки 9 - 14 таблицы с примерами форматирования. |
S |
Символ заполнения: \S<символ> или \s<символ>. Символ, выводимый вместо лидирующих нулей. Используется совместно с символом формата 7. На остальные символы формата не влияет. |
Остальные символы исходной строки копируются в результирующую строку в соответствующем порядке.
Специальные средства для задания разделителя групп разрядов не предусмотрены. Однако программист может расставить в нужных местах (в т.ч. в на границах групп разрядов) любые символы, отличные от символов формата. В строке 40 таблицы приведен вариант с пробелами в качестве разделителей в целой части числа и апострофами - в дробной.
Атрибут формата "род" (\f, \m, \n) должен указываться до числового формата. Например: '\f4', '\n4', '\m4'. В противном случае (например, '4\f', '4\m', '4\n') текстовое значение числа будет выведено в мужском роде (по умолчанию).
Управляющие символы "\M" и "\F" имеют смысл только при выводе текстового представления числа. При этом перед текстовым представлением дробной части числа можно ставить только управляющий символ "\F". См. строку 35 таблицы с примерами форматирования.
Использование управляющего символа "\E" блокирует управляющий символ "\P" (см. строку 15 таблицы с примерами форматирования).
Примеры форматирования.
N п/п |
число |
формат преобразования |
выходная строка |
1 |
55.55 |
'666.88' |
55.55 |
2 |
-55.55 |
'666.88' |
55.55 |
3 |
55.55 |
'[|-]3666.88' |
55.55 |
4 |
-55.55 |
'[|-]3666.88' |
-55.55 |
5 |
55.55 |
'[P|M]3666.88' |
P55.55 |
6 |
-55.55 |
'[P|M]3666.88' |
M55.55 |
7 |
55.55 |
'666.88[Plus|Minus]3' |
55.55Plus |
8 |
-55.55 |
'666.88[Plus|Minus]3' |
55.55Minus |
9 |
55.555 |
'\0p\s@7777 8888' |
@@56 0000 |
10 |
55.555 |
'\1p\s@7777 8888' |
@@55 6000 |
11 |
55.555 |
'\2p\s@7777 8888' |
@@55 5600 |
12 |
55.555 |
'\3p\s@7777 8888' |
@@55 5550 |
13 |
55.555 |
'\-1p\s@7777 8888' |
@@60 0000 |
14 |
55.555 |
'\-1p\s@7777 \2p8888' |
@@60 5600 |
15 |
55.555 |
'\2p\2e\s@7777 8888' |
@@@0 5560 |
16 |
5.5555 |
'\s@6677.889' |
@5.555 |
17 |
5.5555 |
'\s@6677.8899' |
@5.5555 |
18 |
55.555 |
'\s@6677.8899' |
55.555 |
19 |
555.55 |
'\s@6677.8899' |
555.55 |
20 |
5555.5 |
'\s@6677.8899' |
5555.50 |
21 |
555555 |
'\s@6677.8899' |
****.00 |
22 |
5.5555 |
'\-1p\s@6677.8899' |
10.00 |
23 |
5.5555 |
'\0p\s@6677.8899' |
@6.00 |
24 |
5.5555 |
'\1p\s@6677.8899' |
@5.60 |
25 |
5.5555 |
'\2p\s@6677.8899' |
@5.56 |
26 |
5.5555 |
'\3p\s@6677.8899' |
@5.556 |
27 |
55.555 |
'\-1p6677.\2p8899' |
60.56 |
28 |
55.555 |
'45' |
пятьдесят пять пятьсот пятьдесят пять тысячных |
29 |
55.555 |
'4 5' |
пятьдесят пять пятьсот пятьдесят пять тысячных |
30 |
55.555 |
'4 8899' |
пятьдесят пять 555 |
31 |
55.555 |
'6677 5' |
55 пятьсот пятьдесят пять тысячных |
32 |
23.555 |
'6 6 4 66 5 8888' |
2 3 двадцать три 23 пятьсот пятьдесят пять тысячных 5550 |
33 |
55.555 |
'4 руб. 5 коп.' |
пятьдесят пять руб. пятьсот пятьдесят пять тысячных коп. |
34 |
21.215 |
'\m4 руб. \f\2p5 коп.' |
двадцать один руб. двадцать две сотых коп. |
35 |
21.215 |
'\m4 руб. \2p5 коп.' |
двадцать один руб. двадцать два сотых коп. |
36 |
234 |
'666~999' |
234 |
37 |
234.3 |
'666~999' |
234.3 |
38 |
234 |
'666^999' |
234. |
39 |
234.13 |
'\d$666^999' |
234$13 |
40 |
12345.123456789 |
'[|-]3 666 666 666.888''888''888' |
12 345.123'456'789 Пример. ... .var i: double; s: string; .endvar ... .begin i := 12345.6789; s := DoubleToStr(i, '377777.8888'); end. ... Результат: +12345.6789 .................... i ::= 123.456 s ::= DoubleToStr (i, 34.5); ..................... Символы формата "^", "~" и управляющий символ "D" доступны начиная с Атлантис 3.03.23, Атлантис 5.1. Управляющий символ "N" доступен начиная с Атлантис 5.1. |