Формат | 8!: |
Ранги 8!:n равны бесконечности. x 8!:n y форматирует массив y в соответствии с форматом в x .
Обычно y — массив действительных чисел. Но y может быть и текстовой таблицей, в этом случае x игнорируется, а результатом является <@,"1 y (с дальнейшей обработкой, в зависимости от варианта форматирующего глагола). Наконец, y может быть массивом упаковок, где каждый элемент (после распаковки) — действительное число или строка; в этом случае, каждый распакованный атом форматируется независимо.
x — строка фраз, отделенных запятыми; либо атом; либо список индивидуально упакованных фраз. Он должен содержать либо одну фразу (применяемую, ко всем столбцам) либо одну фразу на столбец. Если x опущен, вместо него берется a:$~(_1+#$y)}.$y . Тоесть, 8!:n y эквивалентно вычислению числа позиций после десятичной точки независимо для каждой колонки, и использованию минимальной ширины для каждого числа.
Фраза формата состоит из нуля или более модификаторов, и необязательного суффикса w.d , устанавливающего ширину и количество цифр после десятичной точки. w может быть 0, и w. или w.d целиком можно опустить. Значение каждого из этих случаев следующее:
ширина | цифры после точки | |||
w.d | w | d | ||
0.d | вычисляется | d | ||
d | минимально | d | ||
опущено | минимально | вычисляется |
Указанная или вычисленная величина w применяется ко всему массиву, в то время как минимальное w применяется к каждому отдельному числу. Недостаточная ширина дает результат состоящий из *.
d не может быть более 9-ти. Вычисленное d применяется к целому массиву, и, в этом случае, для ненулевых чисел с абсолютной величиной менее 1e_9 или более 2e9 используется экспоненциальная (научная) запись.
Допустимы следующие модификаторы (каждый из них можно применить не более одного раза в одной фразе формата) :
c | вставить запятую между тройками цифр слева от десятичной точки | |
l | выровнять влево (w должно быть указано или вычислено) | |
b<xx> | заменитель для форматированного нуля | |
d<xx> | заменитель для _ __ _. ; при отсутствии d , _ __ _. показываются как есть | |
m<xx> | префикс для форматированных отрицательных чисел, заменяющий знак "минус" - | |
n<xx> | суффикс для форматированных отрицательных чисел | |
p<xx> | префикс для форматированных неотрицательных чисел | |
q<xx> | суффикс для форматированных неотрицательных чисел | |
r<xx> | фоновый текст, повторяется циклически как в диаде $ | |
s<xx> | xx массив символов четной длины (по умолчанию,замена)
указывающих на замену символов по умолчанию заменить можно символы: e,.-* знак "минус" по умолчанию выводится как - (вместо _ ) |
Можно опустить <xx>, что означает <> . Например, просто b само по себе обозначает: "опустить нули, вместо них не выводить ничего". Вместо <xx> можно использовать (xx) или [xx] или {xx} .
Примеры:
fmt =: 8!:0 fmt1=: 8!:1 fmt2=: 8!:2 ] y=: 1.23 12345 123.4 0.12 ,__ 0 1.15 _1234.5,: _44 0.5 _0.5 0.1 1.23 12345 123.4 0.12 __ 0 1.15 _1234.5 _44 0.5 _0.5 0.1 '' fmt y NB. минимальное w вычисленное d, одинаковое для всех столбцов +------+--------+------+--------+ |1.23 |12345.00|123.40|0.12 | +------+--------+------+--------+ |__ |0.00 |1.15 |-1234.50| +------+--------+------+--------+ |-44.00|0.50 |-0.50 |0.10 | +------+--------+------+--------+ $ '' fmt y 3 4 #&> '' fmt y 4 8 6 4 2 4 4 8 6 4 5 4 ',,,' fmt y NB. минимальное w вычисленное d, для каждого столбца индивидуально +------+-------+------+--------+ |1.23 |12345.0|123.40|0.12 | +------+-------+------+--------+ |__ |0.0 |1.15 |-1234.50| +------+-------+------+--------+ |-44.00|0.5 |-0.50 |0.10 | +------+-------+------+--------+ ((4$<'') fmt y) -: ',,,' fmt y 1 (fmt y) -: ',,,' fmt y 1 '0.2' fmt y NB. вычисленное w, 2 знака после точки, для всех столбцов +--------+--------+--------+--------+ | 1.23|12345.00| 123.40| 0.12| +--------+--------+--------+--------+ | __| 0.00| 1.15|-1234.50| +--------+--------+--------+--------+ | -44.00| 0.50| -0.50| 0.10| +--------+--------+--------+--------+ (4$<'0.2') fmt y NB. вычисленное w, 2 знака после точки, для каждого столбца индивидуально +------+--------+------+--------+ | 1.23|12345.00|123.40| 0.12| +------+--------+------+--------+ | __| 0.00| 1.15|-1234.50| +------+--------+------+--------+ |-44.00| 0.50| -0.50| 0.10| +------+--------+------+--------+ NB. с использованием различных модификаторов (4$<'m<(>n<)>q< >0.2') fmt y +-------+---------+-------+---------+ | 1.23 |12345.00 |123.40 | 0.12 | +-------+---------+-------+---------+ | __| 0.00 | 1.15 |(1234.50)| +-------+---------+-------+---------+ |(44.00)| 0.50 | (0.50)| 0.10 | +-------+---------+-------+---------+ (4$<'cs<, .,>b<nil>d<n/a>0.2') fmt y +------+---------+------+---------+ | 1,23|12 345,00|123,40| 0,12| +------+---------+------+---------+ | n/a| nil| 1,15|-1 234,50| +------+---------+------+---------+ |-44,00| 0,50| -0,50| 0,10| +------+---------+------+---------+ NB. fmt1 и fmt2 'b<nil>d<n/a>0.2' fmt1 y +--------+--------+--------+--------+ | 1.23|12345.00| 123.40| 0.12| | n/a| nil| 1.15|-1234.50| | -44.00| 0.50| -0.50| 0.10| +--------+--------+--------+--------+ 'b<nil>d<n/a>c11.2' fmt2 y 1.23 12,345.00 123.40 0.12 n/a nil 1.15 -1,234.50 -44.00 0.50 -0.50 0.10