Приложение 2. Форматные строки преобразования числа в строку

Форматная строка определяет форму представления значения числа. В общем случае она имеет следующий вид:

%Длина.ТочностьТип

Тип - определяет способ преобразования числа в строку.

Существуют следующие типы:

d
- десятичное целое число со знаком

u
- десятичное целое число без знака

o
- восьмеричное целое число без знака

x
- шестнадцатиричное целое число без знака; для вывода цифр, больших 9, используются буквы a, b, c, d, e, f

X
- шестнадцатиричное целое число без знака; для вывода цифр, больших 9, используются буквы A, B, C, D, E, F

f
- действительное число


Точность
 - точность представления дробной части, т. е. количество знаков после запятой. Если для отображения дробной части значения требуется больше знаков, то значение округляется. Обычно точность указывают в том случае, если используется тип преобразования f. Для других типов указывать точность не рекомендуется. Если точность не указана, то для типа преобразования f она по умолчанию принимается равной 6. Если указана точность 0, то число выводится без дробной части

Длина - количество знаков, отводимое для значения. Может получиться так, что для отображения полученного значения требуется меньше символов, чем указано в блоке Длина. Например, указана длина 10, а получено значение 123. В этом случае слева к значению будет приписано семь пробелов. Если нужно, чтобы слева приписывались не пробелы, а нули, следует в начале блока Длина поместить 0, например, написать не 10, а 010. Блок Длина может отсутствовать, тогда для значения будет отведено ровно столько символов, сколько требуется для его отображения.


User comments:

G_Z 02.03.2016 00:07

Стоит учитывать, что знак числа учитывается в длине значения.
Это приводит к тому, что положительные и отрицательные числа будут выводиться в виде строки разной длины:
$a(-2)
$b(2)
^a.format[%02d]/^b.format[%02d]
выведет «-2/02», а не «-02/02», как ожидалось.

Если есть необходимость всегда выводить знак числа, необходимо указать флаг «+» после %:
$a(-2)
$b(2)
$c(0)
^a.format[%+03d]/^b.format[%+03d]/^c.format[%+03d]
выведет «-02/+02/+00».


G_Z 01.02.2016 21:56

При форматировании целых чисел точность указывать не нужно.
Иначе не будет работать подстановка нулей при длине больше фактической длины числа.

^number.format[%03.d] → ^number.format[%03d]

http://www.parser.ru/forum/?id=80924


Никита Козин 13.09.2005 11:49

Форматную строку следует читать так:

%длина
.точность
тип


In order to add comments you must register.
Copyright © 1997–2017 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 25.11.2010