Форматирование чисел

DivKit имеет встроенную функцию и метод для форматирования чисел, decimalFormat.

count.decimalFormat('#')
decimalFormat(count, '#')

Шаблон форматирования

Шаблон может содержать 4 символа: #, 0, ,, ..

# означает цифру, которую можно опустить, если она не нужна.

0 означает цифру, которая обязательно обязательно должна быть в результате. Будет заполнено нулём, если нужной значащей цифры нет.

Пример:

1.decimalFormat('00') // -> '01'
123.decimalFormat('00') // -> '123'

, означает наличие и позицию группировки. Может встречаться только один раз.

Пример:

1234.decimalFormat('####') // -> '1234'
1234.decimalFormat('#,###') // -> '1 234'

. означает разделитель между целой и дробной частью. Может встречаться только один раз.

Пример:

1.decimalFormat('#.#') // -> '1'
1.decimalFormat('#.0') // -> '1,0'
1.2.decimalFormat('#.#') // -> '1,2'

Комбинация различных символов в формате

Пример:

decimalFormat(1234567.89, '#,###.00') // -> '1 234 567,89'

Прочитать можно так:

  1. В целой части выводим все символы, что есть, и через каждые 3 символа рисуем разделитель группы
  2. В дробной части делаем минимум 2 цифры. Точка есть всегда

Пример:

decimalFormat(0.123456, '.00#') // -> '0,123'

Означает "от 2х до 3х цифр в дробной части".

Округление

Округляется банковским округлением (Round-Half-To-Even).

Округляется до ближайшего чётного целого.

Пример:

decimalFormat(0.5, '#') // -> '0'
decimalFormat(1.5, '#') // -> '2'
decimalFormat(2.5, '#') // -> '2'

Локали

В дефолтном варианте используется текущая локаль.

Локаль влияет на символы для разделения групп и для разделения целой / дробной части, а также на сами цифры.

В ряде случаев лучше передать локаль явным образом:

decimalFormat(0.123456, '.00#', 'en-US') // -> '0.123'

Количество символов в группе задаётся шаблоном, не локалью!