2012-03-20 3 views
0

Я ищу схему спецификатора формата для номеров, которая имеет характеристики вездесущих спецификаторов формата «YYYY-MM-DD» и т. Д. Для дат. Я ищу:Схема спецификации формата номера

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

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

Схема я придумал до сих пор:

#,###.##

сказать:

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

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

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

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

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

+2

"Я чувствую 'Мех' об этой схеме" Почему? Я понимаю, что использование стандартизованной схемы, очевидно, будет приятнее, но лично я думаю, что ваша предлагаемая схема выглядит довольно неплохо. Есть ли что-то конкретное, что вам не нравится? – FireFly

+0

Мне также нравится внешний вид вашего предложения. Легко понятно. – Fabian

+0

@ JonasHöglund Я не могу придумать ничего конкретного. Я интуитивно считал, что специальная схема должна иметь дыры. Но когда я заставил себя задуматься о специфике, я увидел, что это действительно сработает. –

ответ

1

XSLT - это стандарт, который имеет схему comprehensive decimal-format.

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.

Список литературы

Смежные вопросы