語法
numObj.toLocaleString([locales [, options]])
參數
查閱瀏覽器兼容性部分,了解哪些瀏覽器支持 locales 和 options 參數,通過示例: 檢查 locales 和 options 參數的支持了解特征檢測。
注意: ECMAScript 國際化 API,在 Firefox 29 中得以實施,增加了 locales 參數的 Number.toLocaleString 方法。如果參數為 undefined,此方法返回本地操作系統指定的位數,而 Firefox 的早期版本中返回阿拉伯語數字。這一變化已被報告為向后影響的兼容性問題並可能會被盡快修復。(bug 999003)
-
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.
-
返回值
返回一個語言環境下的表示字符串。
示例
使用 toLocaleString
在沒有指定區域的基本使用時,返回使用默認的語言環境和默認選項格式化的字符串。
var number = 3500; console.log(number.toLocaleString()); // Displays "3,500" if in U.S. English locale
檢查 locales 和 options 參數的支持
locales 和 options 參數目前還不是所有瀏覽器都支持的。在 ES5.1 和更新的實現中檢查支持情況,可以依靠使用非法參數時規定拋出的 RangeError 異常:
function toLocaleStringSupportsLocales() { var number = 0; try { number.toLocaleString('i'); } catch (e) { return e.name === 'RangeError'; } return false; }
早於 ES5.1 的實現中,如果帶參數調用 toLocaleString 並不會拋出范圍異常。
在所有宿主環境下,包括那些支持比 ed 5.1 還早的 ECMA-262 的環境,都能有效檢測的方法是直接檢測 ECMA-402 中的其它特性,它指定 Number.prototype.toLocaleString 需要支持地區選項:
function toLocaleStringSupportsOptions() { return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function'); }
它測試全局的 Intl 對象,檢測它不是 null 並且有 NumberFormat 的方法。
使用 locales
這個示例展示了不同地區數字格式的差異。為了設置你的應用程序界面下使用的語言格式,請確保使用 locales 參數指定了使用的語言(可能還有一些備用語言):
var number = 123456.789; // 德國使用逗號作為小數分隔符,分位周期為千位 console.log(number.toLocaleString('de-DE')); // → 123.456,789 // 在大多數阿拉伯語國家使用阿拉伯語數字 console.log(number.toLocaleString('ar-EG')); // → ١٢٣٤٥٦٫٧٨٩ // 印度使用千位/拉克(十萬)/克若爾(千萬)分隔 console.log(number.toLocaleString('en-IN')); // → 1,23,456.789 // nu 擴展字段要求編號系統,e.g. 中文十進制 console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec')); // → 一二三,四五六.七八九 // 當請求不支持的語言時,例如巴厘語,加入一個備用語言,比如印尼語 console.log(number.toLocaleString(['ban', 'id'])); // → 123.456,789
使用 options
通過 toLocaleString 返回的結果可以通過 options 參數進行定制:
var number = 123456.789; // 要求貨幣格式 console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })); // → 123.456,79 € // 日元不使用小數位 console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })) // → ¥123,457 // 限制三位有效數字 console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 })); // → 1,23,000
