Есть небольшая 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
Задать маску числу можно следующими способами:
- создать эеземпляр NumberFormat:
var styler:NumberFormat = new NumberFormat("##,###.0000"); - использовать свойство 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;
Комментариев нет:
Отправить комментарий