作用
返回这个数字在特定语言环境下的表示字符串
语法
num.toLocaleString(locales,[options])
1.locales
- locales:缩写语言代码
- locales 参数必须是一个 BCP 47 语言标记的字符串,或者是一个包括多个语言标记的数组;
- 如果 locales 参数未提供或者是 undefined,返回本地操作系统指示语言的字符串;
- 常用语言标记
- “zh-Hans-CN” 中国 简写’zh’
- “zh-Hans-CN-u-nu-hanidec” 、““zh-u-nu-hanidec””中文十进制数字
2.options
-
options:一个对象
-
style:格式化时使用的样式
- “decimal” /ˈdesɪm(ə)l/ :表示纯数字格式 为默认值;
- "currency " /ˈkʌrənsi/ : 表示货币格式;
- “percent” : 表示百分比格式
-
currency :在货币格式化中使用的货币符号;
-
若是style属性值为currency,必须设置此属性,否则会报错
-
Currency code is required with currency style
-
-
“USD”:美元
-
“EUR” 欧元
-
“CNY” 人民币
-
-
currencyDisplay:如何在货币格式化中显示货币
- symbol 使用本地化的货币符号例如€ (默认)
- code 使用国际标准组织货币代码
- name 使用本地化的货币名称
-
useGrouping:是否使用分组分隔符
- true:使用(默认)
- false:不使用
-
数字规范
- [1]使用的有效数字的最大数量:maximumSignificantDigits
- /sɪɡˈnɪfɪkənt/ /ˈdɪdʒɪts/
- 可能的值是从 1 到 21;默认是 21.
- [2]使用的有效数字的最小数目:minimumSignificantDigits
- 可能的值是从 1 到 21;默认值是 1
- [3]使用的整数数字的最小数目:minimumIntegerDigits
- 可能的值是从 1 到 21,默认值是 1
- [4]使用的小数位数的最小数目:minimumFractionDigits
- 可能的值是从 0 到 20
- 普通的数字和百分比格式默认为 0
- 货币默认为2
- 可能的值是从 0 到 20
- [5]使用的小数位数的最大数目:maximumFractionDigits
- 可能的值是从 0 到 20
- 纯数字格式的默认值是
minimumfractiondigits
和 3 中大的那一个 - 货币格式默认值是
minimumfractiondigits
和2中大的那个; - 百分比格式默认值为minimumfractiondigits和0中大的那个;
- 纯数字格式的默认值是
- 可能的值是从 0 到 20
- 设置了[1] [2]中任意一个,设置的[3] [4] [5] 将不起作用;
- [1]使用的有效数字的最大数量:maximumSignificantDigits
-
示例
-
示例1-无参数
-
123456789.123456789.toLocaleString() // '123,456,789.123' 123456789.6666666.toLocaleString() // '123,456,789.667'
-
默认 本地语言、纯数字格式、使用分组分隔符、小数位数为0-3位(超出截取,四舍五入)
-
-
示例2-报错
-
12345678.toLocaleString() // Invalid or unexpected token
-
因为这个.不被认为是调用方法,而是认为是小数点-后面被认为是数字–>报错;
-
const num = 12345678 num.toLocaleString() // '12,345,678'
-
-
示例3-保留5位小数
-
123456789.123456789.toLocaleString('zh',{maximumFractionDigits:5}) // '123,456,789.12346'
-
-
示例4-百分位
-
const num = 123456789.123456789 num.toLocaleString('zh',{style:'percent', useGrouping:false}) // 12345678912%
-
-
示例5-中文数字(并不是带个十分千万的那种)
-
const num = 123456789.123456789 num.toLocaleString('zh-Hans-CN-u-nu-hanidec',{ useGrouping:false }) // 一二三四五六七八九.一二三
-
0会转化为O;
-
const num = 101; num.toLocaleString('zh-u-nu-hanidec') // '一〇一'
-
-
案例1-转千分位符
changeString(num){
if(!num && num!=0){
return ''
}
let number = Number(num)
if(isNaN(number)){
return num
}
return number.toLocaleString()
}
案例2-去掉千分位符
changeNumber(str){
return + str.replace(/,/gi,'')
}