Intl.NumberFormat.prototype.format()
基线 广泛可用
此功能已得到很好的建立,并且在许多设备和浏览器版本中都能正常工作。它自 2017 年 9 月.
报告反馈
试一试
语法
format()
方法是 Intl.NumberFormat
实例的一种方法,它根据此 Intl.NumberFormat
对象的 语言环境和格式化选项 格式化数字。format(number)
js
注意:旧版本的规范将字符串解析为 Number
。请查看兼容性表以了解您的浏览器。
返回值
一个字符串,表示根据此 Intl.NumberFormat
对象的语言环境和格式化选项格式化的给定 number
。
描述
注意:大多数情况下,format()
返回的格式是保持一致的。但是,即使在同一个语言环境中,输出也可能在不同的实现之间有所不同——输出的变化是设计使然,并且规范允许。输出结果也可能与您的预期不符。例如,字符串可能会使用不间断空格或被双向控制字符包围。您不应将 format()
的结果与硬编码常量进行比较。
format()
方法是 Intl.NumberFormat
实例的一种方法,它根据此 Intl.NumberFormat
对象的 语言环境和格式化选项 格式化数字。new Intl.NumberFormat("en-US").format(1234567891234567891); // 1,234,567,891,234,568,000
new Intl.NumberFormat("en-US").format(1234567891234567891n); // 1,234,567,891,234,567,891
JavaScript 中的 Number
值如果太大或太小,就会出现精度丢失,从而导致文本表示不准确。如果您要对大于 Number.MAX_SAFE_INTEGER
的整数进行计算,您应该使用 BigInt
,它将正确格式化。
format()
方法是 Intl.NumberFormat
实例的一种方法,它根据此 Intl.NumberFormat
对象的 语言环境和格式化选项 格式化数字。new Intl.NumberFormat("en-US").format("1234567891234567891"); // 1,234,567,891,234,567,891
示例
您还可以传入非常大的字符串,以任意精度的十进制字符串格式进行格式化(如果您要对数据进行计算,您仍然需要使用 BigInt
)。
使用 format
format()
方法是 Intl.NumberFormat
实例的一种方法,它根据此 Intl.NumberFormat
对象的 语言环境和格式化选项 格式化数字。const options = { style: "currency", currency: "RUB" };
const numberFormat = new Intl.NumberFormat("ru-RU", options);
console.log(numberFormat.format(654321.987));
// "654 321,99 ₽"
使用 format
获取器函数来格式化单个货币值。以下代码展示了如何为俄语语言环境格式化卢布货币。
将 format 与 map 一起使用
format()
方法是 Intl.NumberFormat
实例的一种方法,它根据此 Intl.NumberFormat
对象的 语言环境和格式化选项 格式化数字。const a = [123456.789, 987654.321, 456789.123];
const numberFormat = new Intl.NumberFormat("es-ES");
const formatted = a.map((n) => numberFormat.format(n));
console.log(formatted.join("; "));
// "123.456,789; 987.654,321; 456.789,123"
使用 format
获取器函数来格式化数组中的所有数字。请注意,该函数绑定到从中获取它的 Intl.NumberFormat
,因此可以直接传递给 Array.prototype.map
。这被认为是一个历史文物,作为不再为新功能遵循的约定的一部分,但为了保持与现有程序的兼容性而保留下来。
将 format 与字符串一起使用
format()
方法是 Intl.NumberFormat
实例的一种方法,它根据此 Intl.NumberFormat
对象的 语言环境和格式化选项 格式化数字。const numberFormat = new Intl.NumberFormat("en-US");
// Here the value is converted to a Number
console.log(numberFormat.format(987654321987654321));
// 987,654,321,987,654,300
// Here we use a string and don't lose precision
console.log(numberFormat.format("987654321987654321"));
// 987,654,321,987,654,321
使用字符串,我们可以指定大于 Number.MAX_SAFE_INTEGER
的数字,而不会丢失精度。
format()
方法是 Intl.NumberFormat
实例的一种方法,它根据此 Intl.NumberFormat
对象的 语言环境和格式化选项 格式化数字。const numberFormat = new Intl.NumberFormat("en-US");
const bigNum = 1000000000000000110000n;
console.log(numberFormat.format(bigNum));
// "1,000,000,000,000,000,110,000"
// Format as a string using the `E` syntax:
console.log(numberFormat.format(`${bigNum}E-6`));
// "1,000,000,000,000,000.11"
规范
我们还可以使用通用的“E”指数语法表示十进制字符串:#.#E# 。以下代码创建了一个 BigInt ,将其强制转换为以 E-6 结尾的字符串,然后将其格式化。 |
---|
规范 # ECMAScript 国际化 API 规范 |
浏览器兼容性
sec-intl.numberformat.prototype.format