BigInt.prototype.toLocaleString()

toLocaleString() 方法返回一个字符串,该字符串具有此 BigInt 的 language-sensitive 表达形式。

语法

bigIntObj.toLocaleString([locales [, options]])

参数

locales 和 options 参数可自定义函数的行为,并允许应用程序指定应使用其格式约定的语言。在忽略 locales 和 options 参数的实现中,使用的 locale 和返回的字符串形式完全依赖于实现。

locales

可选。缩写语言代码(BCP 47 language tag,例如: cmn-Hans-CN)的字符串或者这些字符串组成的数组. 关于参数 locales 的一般形式和解释请参见Intl page. 下面的这些 Unicode 扩展键也是被允许的:

译者注:下面扩展的使用方式是language[-scripts][-region]-u-nu-*,例如:zh-u-nu-hanidec(表示中文十进制数字) 

nu
要使用的编号系统。可能的值有: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec"(中文十进制数字), "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
options

可选. 包含一些或所有的下面属性的类:

  • “decimal” 用于纯数字格式;
  • “currency” 用于货币格式;
  • “percent” 用于百分比格式;
  • “unit”   用于单位格式
localeMatcher
使用的 local 的匹配算法. 可能的值有 "lookup 和 "best fit"; 默认值是 "best fit". 有关此选项更多的信息, 请参见 Intl page.
style
要使用的格式样式,默认为 “decimal”。
numberingSystem 
编号系统。可能的值包括:"arab","arabext"," bali","beng","deva","fullwide"," gujr","guru","hanidec","khmr"," knda","laoo", "latn","limb","mlym"," mong","mymr","orya","tamldec"," telu","thai","tibt"。
unit
unit 格式中使用的单位,可能的值为在 UTS #35, Part 2, Section 6 定义的核心单元标识符。已从完整列表中选择了一个单位子集以用于ECMAScript。可以将成对的简单单位与 “ -per-” 连接以组成一个复合单位。没有默认值;如果 style“unit”,必须提供unit 属性。
unitDisplay
unit 格式化中使用的单位格式化样式,默认值为“ short”。
  • “long” (e.g., 16 litres)
  • “short“ (e.g., 16 l)
  • ”narrow“ (e.g., 16l)
currency
在货币格式化中使用的货币符号. 可能的值是ISO的货币代码 (the ISO 4217 currency codes,) 例如 "USD" 表示美元, "EUR" 表示欧元, 或者 "CNY"是人民币 — 更多请参考 Current currency & funds code list。没有默认值,如果 style“currency”,必须提 currency 属性.
currencyDisplay
如何在货币格式化中显示货币. 可能的值有 "symbol" 表示使用本地化的货币符号,例如 €, "code" 表示使用国际标准组织货币代码, "name" 表示使用本地化的货币名称,如 "dollar"; 默认值是 "symbol".
useGrouping
是否使用分组分隔符,如千位分隔符或千/万/亿分隔符。可能的值是 true 和 false,默认值是 true。

下面的属性分为两组:minimumintegerdigitsminimumfractiondigitsmaximumfractiondigits 作为一组,minimumsignificantdigitsmaximumsignificantdigits 作为一组。如果定义了第二组中的任意一个属性,则忽略第一组的设置.

minimumIntegerDigits
使用的整数数字的最小数目.可能的值是从1到21,默认值是1.
minimumFractionDigits
使用的小数位数的最小数目.可能的值是从 0 到 20;默认为普通的数字和百分比格式为 0;默认为货币格式是由 ISO 4217 currency code list  提供 (如果列表中没有提供则值为 2)。
maximumFractionDigits
使用的小数位数的最大数目。可能的值是从 0 到 20;纯数字格式的默认值是minimumfractiondigits 和 3 中大的那一个;货币格式默认值是minimumfractiondigitsISO 4217 currency code list 中大的那一个(如果列表中没有提供则值为2);百分比格式默认值是 minimumfractiondigits 和 0 中大的那一个。
minimumSignificantDigits
使用的有效数字的最小数目。可能的值是从1到21;默认值是1。
maximumSignificantDigits
使用的有效数字的最大数量。可能的值是从1到21;默认是 21.
notation
该号码应显示的格式,默认为 “standard”
  • "standard"  纯数字格式;
  • "scientific"  返回格式化数字的大小顺序;
  • "engineering"  当被三除时返回十的指数
  • "compact" 代表指数的字符串,默认使用 “short” 格式
    • "compactDisplay" 仅在 notation“compact” 时使用,采用 “short”(默认)或“long

返回值

具有此 BigInt 的 language-sensitive 表示形式的字符串。

例子

Using toLocaleString

在不指定语言环境的基本用法中,将返回默认语言环境中带默认选项的格式化字符串。

var bigint = 3500n;

bigint.toLocaleString();
// Displays "3,500" if in U.S. English locale

Using locales

这个例子展示了本地化数字格式的一些变体。为了获得应用程序用户界面中使用的语言的格式,请确保使用 locales 参数指定该语言(可能还有一些备用语言):

var bigint = 123456789123456789n;

// German uses period for thousands
console.log(bigint.toLocaleString('de-DE'));
// → 123.456.789.123.456.789

// Arabic in most Arabic speaking countries uses Eastern Arabic digits
console.log(bigint.toLocaleString('ar-EG'));
// → ١٢٣٬٤٥٦٬٧٨٩٬١٢٣٬٤٥٦٬٧٨٩

// India uses thousands/lakh/crore separators
console.log(bigint.toLocaleString('en-IN'));
// → 1,23,45,67,89,12,34,56,789

// the nu extension key requests a numbering system, e.g. Chinese decimal
console.log(bigint.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
// → 一二三,四五六,七八九,一二三,四五六,七八九

// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(bigint.toLocaleString(['ban', 'id']));
// → 123.456.789.123.456.789

Using options

toLocaleString 提供的结果可以使用 options 参数进行自定义:

var bigint = 123456789123456789n;

// request a currency format
console.log(bigint.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// → 123.456.789.123.456.789,00 €

// the Japanese yen doesn't use a minor unit
console.log(bigint.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
// → ¥123,456,789,123,456,789

// limit to three significant digits
console.log(bigint.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
// → 1,23,00,00,00,00,00,00,000

性能

格式化大量数字时,最好创建 NumberFormat 对象并使用其 NumberFormat.format 属性提供的函数。

标准

Specification Status
BigInt Stage 3

浏览器支持

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toLocaleStringChrome Full support 67Edge No support NoFirefox Full support 68IE No support NoOpera Full support 54Safari No support NoWebView Android Full support 67Chrome Android Full support 67Firefox Android Full support 68Opera Android Full support 48Safari iOS No support NoSamsung Internet Android Full support 9.0nodejs Full support 10.4.0
localesChrome Full support 76Edge No support NoFirefox Full support 70IE No support NoOpera No support NoSafari No support NoWebView Android Full support 76Chrome Android Full support 76Firefox Android No support NoOpera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No
optionsChrome Full support 76Edge No support NoFirefox Full support 70IE No support NoOpera No support NoSafari No support NoWebView Android Full support 76Chrome Android Full support 76Firefox Android No support NoOpera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

Full support  
Full support
No support  
No support

请参阅