本篇文章給大家?guī)砹岁P(guān)于javascript的相關(guān)知識,主要為大家介紹了JavaScript中使用toLocaleString數(shù)字格式化處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助。
toLocaleString
項(xiàng)目中給數(shù)字做格式化處理的問題太常見啦,特別是涉及到金融數(shù)字的部分,這次就是有個需求需要給各種不同格式,要是以前可能就傻傻的自己寫函數(shù)處理,可是這次無意間看到還有這么好用的函數(shù),那以前豈不是純純的大冤種了-_-
Number.prototype.toLocaleString()
參數(shù): numObj.toLocaleString([locales [, options]])。
第一個參數(shù)是一個可選參數(shù),縮寫語言代碼(BCP 47 language tag,例如: cmn-Hans-CN)的字符串或者這些字符串組成的數(shù)組,一些 Unicode 擴(kuò)展鍵也是被允許的,詳情見MDN,有特殊地區(qū)格式就得傳當(dāng)?shù)氐?code>locales。一般傳值undefined
,zh
或者en
,就可以應(yīng)對大多數(shù)情況了,默認(rèn)不傳是undefiend
。
1、數(shù)字分割成千分位
它直接調(diào)用,默認(rèn)就是分割千分位的
var a = 123456.6789 a.toLocaleString() // 123,456.679,默認(rèn)保留3位小數(shù)
如果不想被分給成千分位,則需要用到一個屬性useGrouping: false
var a = 123456.6789 a.toLocaleString(undefined, {useGrouping: false}) // 123456.6789
2、保留幾位小數(shù)
這里主要用到了兩個屬性: 保留最少小數(shù)minimumFractionDigits
和保留最多小數(shù)maximumFractionDigits
var a = 123456.6789 a.toLocaleString(undefined, {minimumFractionDigits: 6}) //123,456.678900
這里把最少保留數(shù)設(shè)為6,那它就會保留6位小數(shù)
var a = 123456.6789 a.toLocaleString(undefined, {maximumFractionDigits: 2}) //123,456.68
如果想保留兩位小數(shù)的話,把保留最多小數(shù)設(shè)為2就行。
3、使用的整數(shù)數(shù)字的最小數(shù)目minimumIntegerDigits
范圍是1-21,默認(rèn)1
var a = 123456.6789 a.toLocaleString(undefined, {minimumIntegerDigits: 8}) //00,123,456.679
使用的整數(shù)數(shù)字的最小數(shù)目,不足會補(bǔ)零
4、使用的有效數(shù)字的最小數(shù)目minimumSignificantDigits
范圍是1-21,默認(rèn)1
var a = 123456.6789 a.toLocaleString(undefined, {minimumIntegerDigits: 8}) //00,123,456.679
5、使用的有效數(shù)字的最大數(shù)目maximumSignificantDigits
范圍是1-21,默認(rèn)21
var a = 123456.6789 a.toLocaleString(undefined, {maximumSignificantDigits: 6}) //123,457
4.5兩個保留有效位的屬性也很厲害,可以保留任意有效位,四舍五入,不足位的會補(bǔ)零。
6、展示的樣式style
屬性style
是不同樣式展示選項(xiàng):默認(rèn)是decimal
。 選項(xiàng):
decimal
: 純數(shù)字
percent
: 百分比
unit
: 單位格式,配合unit
,單位使用。單位取值
currency
: 用于貨幣格式,注意這個屬性不能單獨(dú)使用,還得配套使用currency
屬性
var a = 123456.6789,
a.toLocaleString(undefined, {style: 'decimal'}) //123,456.679 a.toLocaleString(undefined, {style: 'percent'}) // 12,345,668% a.toLocaleString(undefined, {style: 'currency', currency: 'EUR'}) // €123,456.68 a.toLocaleString(undefined, {style: 'currency', currency: 'CNY'}) // ¥123,456.68 a.toLocaleString(undefined, {style: 'unit', unit: 'acre'}) // 123,456.679英畝
其中currency
和currencyDisplay
也可配套使用,前者制定對應(yīng)的貨幣,比如 USD
、EUR
與 CNY
(不區(qū)分大小寫的),后者則是貨幣符號的展示樣式,默認(rèn)currencyDisplay
:symbol
:
var a = 123456.6789, a.toLocaleString(undefined, {style: 'currency', currency: 'CNY', currencyDisplay: 'symbol'}) // ¥123,456.68 a.toLocaleString(undefined, {style: 'currency', currency: 'CNY', currencyDisplay: 'code'}) // CNY 123,456.68 a.toLocaleString(undefined, {style: 'currency', currency: 'CNY', currencyDisplay: 'name'}) // 123,456.68人民幣
上面都是一些toLocaleString
對數(shù)字的常規(guī)格式,應(yīng)對日常的格式處理應(yīng)該夠用的。
當(dāng)然它還有Date.prototype.toLocaleString
,Array.prototype.toLocaleString
,感興趣可以自行了解一下。