RU Форматирование строк - Mingun/d3 GitHub Wiki

ВикиСправка по APIЯдроФорматирование строк
English | Русский

Форматирование чисел — это одна из тех вещей, о которых не задумываешся до тех пор, пока на подписи к вашей оси не вылезет уродливое «0.30000000000000004». Кроме того, может быть вы хотите сгруппировать тысячи для улучшения читаемости и использовать фиксированную точность вывода, как, например, здесь: «$1,240.10». Или, может быть вы хотите отобразить только значащие цифры конкретного числа. D3 позволяет сделать все эти вещи легко и просто с помощью стандартных числовых форматов. Например, для создания функции, заполняющей нулями до четырёх цифр, достаточно написать:

var zero = d3.format("04d");

Теперь вы можете удобно форматировать числа:

zero(2); // "0002"
zero(123); // "0123"

Кроме чисел, D3 также поддерживает форматирование и разбор дат и значений, разделённых запятой.

Числа

# d3.format(specifier)

Возвращает новую форматирующую функцию с указанным строковым спецификатором формата specifier (эквивалентна locale.numberFormat для локали по умолчанию — «U.S. English»). Форматирующая функция принимает число в качестве единственного аргумента и возвращает строку, представляющую отформатированное число. Спецификатор формата сделан по образу встроенного в Python 3.1 мини-языка спецификации формата. Наиболее общая форма спецификатора выглядит как [​[fill]align][sign][symbol][0][width][,][.precision][type].

Поле fill может быть любым символом, за исключением открывающей и закрывающей фигурных скобок («{» и «}»). Наличие заполняющего символа сигнализируется символом, следующим за ним, который должен быть одним из опции align.

Поле align может быть:

  • («<») — принудительно выравнивает поле по левому краю в пределах доступного пространства.
  • («>») — принудительно выравнивает поле по правому краю в пределах доступного пространства (это поведение по умолчанию).
  • («^») — принудительно выравнивает поле по центру в пределах доступного пространства.

Поле sign может быть:

  • плюс («+») — знак будет использоваться как для положительных, так и для отрицательных чисел.
  • минус («-») — знак будет использоваться только для отрицательных чисел (это поведение по умолчанию).
  • пробел (« ») — для положительных чисел будет использоваться лидирующий пробел, а для отрицательных — знак минус.

Поле symbol может быть:

  • валюта («$») — вначале (или в конце, в зависимости от локали) будет добавлен символ валюты.
  • основание («#») — для вывода в двоичной, восьмеричной или шестнадцатеричной форме добавляется префикс «0b», «0o» или «0x» соответственно.

Поле 0 включает заполнение нулями.

Поле width определяет минимальную ширину поля вывода. Если он не указан, ширина будет определяться из контекста.

Поле запятая («,») включает использование символа запятой в качестве разделителя тысячных разрядов.

Поле precision указывает, сколько цифр будет отображаться после десятичной запятой для значений, отформатированных типами «f» и «%» или перед и после десятичной запятой для значений, отформатированных типами «g», «r» и «p».

Доступные значения поля type перечислены ниже:

  • экспоненциальная форма («e») — используется Number.toExponential.
  • общая форма («g») — используется Number.toPrecision.
  • форма с фиксированной запятой («f») — используется Number.toFixed.
  • форма целого числа («d») — используется Number.toString, но игнорируются любые нецелые значения.
  • форма с округлением («r») — подобно форме с фиксированной запятой, но округляет число до precision значащих цифр.
  • процентная форма («%») — подобно форме с фиксированной запятой, но умножает число на 100 и присоединяет суффикс «%».
  • процентная форма с округлением («p») - подобно форме с округлением, но умножает число на 100 и присоединяет суффикс «%».
  • двоичная форма («b») — выводит число по базе 2.
  • восьмеричная форма («o») — выводит число по базе 8.
  • шестнадцатеричная форма («x») — выводит число по базе 16, использует нижний регистр символов для цифр свыше 9.
  • шестнадцатеричная форма («X») — выводит число по базе 16, использует верхний регистр символов для цифр свыше 9.
  • символ («c») — преобразует целое число в соответствующий символ юникода перед печатью.
  • форма с суффиксами СИ («s») — подобно форме с округлением, но присоединяет приставку СИ, так, для миллиона выведет что-то вроде «9.5M», а для миллионной части — «1.00µ».

Также, как сокращение для «,g», поддерживается тип «n».

# d3.formatPrefix(value[, precision])

Возвращает приставку СИ для указанного значения value. Если указан необязательный параметр precision, значение будет округлено с использованием функции d3.round перед вычислением приставки. Возвращённый объект приставки имеет два свойства:

  • symbol — символ приставки, например «M» для миллиона.
  • scale — функция масштабирования, для преобразования чисел к соответствующему префиску масштабу.

Например:

var prefix = d3.formatPrefix(1.21e9);
console.log(prefix.symbol); // «G»
console.log(prefix.scale(1.21e9)); // 1.21

Этот метод используется в функции d3.format для спецификатора s.

# d3.round(x[, n])

Возвращает значение x, округлённое до n цифр после десятичной запятой. Если n опущен, по умолчанию он равен нулю. Результатом является число. Значения округляются до ближайшего, кратного 10 в степени минус n (10-n); если два этих ближайших одинакого близки, значение округляется по правилам встроенной функции round. Например:

d3.round(1.23); // 1
d3.round(1.23, 1); // 1.2
d3.round(1.25, 1); // 1.3
d3.round(12.5, 0); // 13
d3.round(12, -1); // 10

Обратите внимание, что полученное число при преобразованию в строку может быть неточным из-за стандарта точности IEEE числа с плавающей запятой; для форматирования числа в строку с фиксированным количеством десятичных знаков используйте d3.format.

Строки

# d3.requote(string)

Возвращает закавыченную (экранированную) версию указанной строки string, так что данная строка сможет быть внедрена в регулярное выражение с качестве строкового литерала.

d3.requote("[]"); // "\[\]"

Даты

Смотрите модуль d3.time.

⚠️ **GitHub.com Fallback** ⚠️