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

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

localeMatcher
使用的local的匹配算法.可能的值有"lookup"和"best fit";默认值是 "best fit" .有关此选项的信息,请参见 Intl page.
style
格式化时使用的样式.可能的值有“decimal”表示纯数字格式, “currency”表示货币格式,和 "percent"表示百分比格式 ;默认值是 "decimal" .
currency
在货币格式化中使用的货币符号.可能的值是 ISO 的货币代码(the ISO 4217 currency codes,)例如 "USD" 表示美元, "EUR" 表示欧元, or "CNY"是人民币 —更多请参考 Current currency & funds code list.没有默认值,如果样式是“currency”,必须提供货币属性.
currencyDisplay
如何在货币格式化中显示货币.可能的值有 "symbol"表示 使用本地化的货币符号例如€, "code"表示 使用国际标准组织货币代码, "name" 表示使用本地化的货币名称,如 "dollar" ;默认值是 "symbol" .
useGrouping
是否使用分组分隔符,如千位分隔符或千/万/亿分隔符.可能的值是true和false,默认值是true.

下面的属性分为两组:minimumintegerdigits,minimumfractiondigits,maximumfractiondigits作为一组,minimumsignificantdigits和maximumsignificantdigits作为一组.如果定义了第二组中的任意一个属性,则忽略第一组的设置.

minimumIntegerDigits
使用的整数数字的最小数目.可能的值是从1到21,默认值是1.
minimumFractionDigits
使用的小数位数的最小数目.可能的值是从0到20;默认为普通的数字和百分比格式为0;默认为货币格式是由国际标准化组织列表(ISO 4217 currency code list)提供(如果列表中没有提供则值为2).
maximumFractionDigits
使用的小数位数的最大数目。可能的值是从0到20;纯数字格式的默认值是minimumfractiondigits和3中大的那一个;货币格式默认值是minimumfractiondigits和国际标准化组织列表(如果列表中没有提供则值为2)中大的那一个;百分比格式默认值是minimumfractiondigits和0中大的那一个。
minimumSignificantDigits
使用的有效数字的最小数目。可能的值是从1到21;默认值是1。
maximumSignificantDigits
使用的有效数字的最大数量。可能的值是从1到21;默认是minimumsignificantdigits.

返回值

具有此 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.format 属性提供的函数。