вторник, ноября 21, 2006

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

Есть небольшая AS3 библиотека с полезными методами. Одним из них является вывод чисел, форматированных по маске. За это отвечает класс NumberFormat. Маски поддерживают следующие символы:

  • 0 - место, заполненное числом или нулем
  • # - место, заполненное числом или пробелом
  • . - дробный разделитель. Выводится символ точки
    или запятой - в зависимости от локали.
  • , - группировка символов. Выводится символ точки или запятой - в зависимости от
    локали.

Рассмотрим следующую маску:
##,###.0000

Если эту маску применить к числам
1.2345
12.345
123.45
1234.5
12345

То они будут отображены в виде
1.2345
12.3450
123.4500
1,234.5000
12,345.0000

Задать маску числу можно следующими способами:

  1. создать эеземпляр NumberFormat:
    var styler:NumberFormat = new NumberFormat("##,###.0000");


  2. использовать свойство mask:
    styler.mask = "##.00";

Рассмотрим готовый пример:var styler:NumberFormat = new NumberFormat("#,###,###,###");
trace(styler.format(1));
trace(styler.format(12));
trace(styler.format(123));
trace(styler.format(1234));

styler.mask = "#,###,###,###.0000";

trace(styler.format(12345));
trace(styler.format(123456));
trace(styler.format(1234567));
trace(styler.format(12345678));
trace(styler.format(123456789));


Числа будут выведены в следующем виде:
1
12
123
1,234
12,345.0000
123,456.0000
1,234,567.0000
12,345,678.0000
123,456,789.0000

Разделители и знаки дроби меняются на точки или запятые в зависимости от текущей локали автоматически. Но могут иногда быть ошибки определения локали. В
этом случае локаль можно определить руками, задав, например:

Locale.slanguage = "fr";

Во Франции, в качестве группировки применяются точки, а в качестве дробного разделителя запятые. Насколько я знаю, в России тоже самое, поэтому данную
установку можно использовать (или я ошибаюсь?).

При выполнении примеров не забудьте импортировать необходимые классы:
import ascb.util.NumberFormat;
import ascb.util.Locale;

Комментариев нет: