Формат преобразования вещественных чисел в строку Назад В начало Вперед

Форматный перевод вещественных чисел в строку предназначен для вывода текстового представления числа и в основном используется для вывода результатов, связанных с деньгами.

Форматируемое число делится на три части: знак числа, целая часть числа, дробная часть числа. Каждая из них появляется в выходной строке в том месте и в том виде, как это специфицировано в строке формата преобразования. Если, например, в строке формата преобразования не поставить символ вывода знака числа, знак никогда не появится в строке результата. См. строку 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.