Схема спецификатора числового формата - PullRequest
0 голосов
/ 20 марта 2012

Я ищу схему спецификатора формата для чисел , которая имеет характеристики вездесущих спецификаторов формата "ГГГГ-ММ-ДД" и т. Д. Для дат.Я ищу:

  1. Легко обрабатывать: не нужно много усилий (сложность алгоритма, производительность) для форматирования числа.
  2. (Необязательно) Пользователь-дружественный: пользователям достаточно интуитивно понятно работать с этим синтаксисом.
  3. Учет тысяч разделителей и десятичных разрядов.

Несмотря на то, что моим целевым доменом является JavaScript (т.е. форматирование Number экземпляры), я предпочитаю схему спецификатора, которая является стандартной, интуитивно понятной и т. д. вместо родной JavaScript.И нет, я не думаю, что спецификаторы числового формата printf достаточно интуитивны, чтобы представлять их пользователям.

Схема, которую я до сих пор придумал, такова:

#,###.##

сказать:

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

Я чувствую "ме" об этой схеме и не хочупотратить слишком много времени на его реализацию, прежде чем увидеть лучшие альтернативы.

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

Должен ли я забыть об использовании схемы спецификатора формата и просто использовать набор свойств, которые абстрагируются на уровне представления?Существует ли стандартный спецификатор (ish), который соответствует трем критериям, которые я упомянул в верхней части?

В конце концов, я не без решения, и у меня есть достаточно, чтобы начать работу.Я просто ищу более идеальное решение.

1 Ответ

1 голос
/ 29 августа 2012

XSLT - это стандарт, который имеет всеобъемлющую схему десятичного формата .

format-number(5351,"#,###.##")

ECMA-402 - это другой стандарт, который имеет API для форматирования чисел:

Культурно-зависимый объект NumberFormat может быть создан с использованием конструктора Intl.NumberFormat с желаемым языковым тегом и параметрами. Метод форматирования объекта NumberFormat может использоваться для форматирования числовых данных на основе локали и установленных опций. Number.prototype.toLocaleString также был обновлен для внутреннего использования Intl.NumberFormat для форматирования с учетом культуры и теперь поддерживает два необязательных аргумента - языковой стандарт и параметры.

var number = 1123456.789;

// request a US formatted number
console.log("United States: " + new Intl.NumberFormat('en-US').format(number));

// limit to three significant digits
console.log("3 significant digits: " + new Intl.NumberFormat('en-US', { maximumSignificantDigits: 3 }).format(number));

// request a French formatted number
console.log("France: " + new Intl.NumberFormat('fr-FR').format(number));

// request a Indian formatted number
console.log("India: " + new Intl.NumberFormat('en-IN').format(number));

Более удобным для пользователя решением было бы что-то вроде NumberFormat или DecimalFormat схем CFML.

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...