NumberFormatter 类将根据特定区域设置的约定格式化数值(类型为 int、uint 或 Number)。
以下示例显示了使用用户的操作系统提供的默认格式设置属性格式化数字的最简单方式:
var nf:NumberFormatter = new NumberFormatter(LocaleID.DEFAULT);
trace(nf.formatNumber(-123456.789))
结果根据用户的区域设置设置和用户首选项而变化。例如,如果用户的区域设置是 fr-FR,则格式化的值将是:
-123.456,789
如果您只希望格式化特定区域设置的数字,而不管用户的设置如何,则专门设置区域设置名称。例如:
var nf:NumberFormatter = new NumberFormatter("de-CH");
trace(nf.formatNumber(-123456.789));
在这种情况下,结果为:
-123'456.789
formatNumber() 方法将采用 Number 作为参数。NumberFormatter 类还具有采用 int 作为输入的 formatInt() 方法,以及采用 uint 的 formatUint() 方法。
您可以通过设置 NumberFormatter 类的属性明确控制格式化逻辑,如此示例中所示:
var nf:NumberFormatter = new NumberFormatter("de-CH");
nf.negativeNumberFormat = 0;
nf.fractionalDigits = 5;
nf.trailingZeros = true;
nf.decimalSeparator = ",";
nf.useGrouping = false;
trace(nf.formatNumber(-123456.789)); //(123456.78900)
此示例首先创建一个 NumberFormatter 对象,然后:
-
将负数格式设置为使用括号(与财务应用程序相同);
-
将小数点分隔符之后的数位设置为 5;
-
指定使用尾部零以确保 5 位小数;
-
将小数点分隔符设置为逗号;
-
要求格式化程序不使用任何分组分隔符。
注:
当更改其中一些属性时,生成的数字格式将不再对应于指定区域设置的首选格式。仅在下列情况下使用其中一些属性:当区域设置感知不重要时;当您需要详细控制格式的一个方面(例如尾部零的数量)时;或者当用户直接请求更改(例如,通过 Windows 控制面板进行更改)时。