千位分隔符(逗号)表示web网页中的大数字
1. 方法一:使用toLocaleString()方法
Number.toLocaleString('en-US');
//举例
(123456789).toLocaleString('en-US');//123,456,789
另外,对于IE edge之前的版本,Number.toLocaleString()会自动补上两位小数,如果是不需要的,需要自己额外过滤掉。
2. 方法二:使用正则表达式的方式
语法如下:
String(Number).replace(/(\d)(?=(\d{3})+$)/g, "$1,");
//举例
String(123456789).replace(/(\d)(?=(\d{3})+$)/g, "$1,"); //123,456,789
封装成一个方法
/**
* 将数值四舍五入(保留2位小数)后格式化成金额形式
*
* @param num 数值(Number或者String)
* @return 金额格式的字符串,如'1,234,567.45'
* @type String
*/
function price(val) {
if (!val) return 0.0
let USPrice = Number.parseFloat(val).toLocaleString('en-US')
let lastDot = USPrice.toString().indexOf('.')
// 完全是整数, 需要添加小数点
if (lastDot === -1) USPrice += '.00'
// 返回数据是一位小数,用0补齐为两位小数
if (USPrice.toString().substring(lastDot + 1).length === 1) USPrice += '0'
return '¥' + USPrice
}
3 方法三:小程序,好使(安卓、ios)都好用
在小程序上可以使用的
function USprice(num) {
if (isNaN(num) || num == undefined) return '--'
num = Number.parseFloat(num)
num = Math.round(num*100)/100;
num = (num.toFixed(2).toString()).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
return '¥' + num;
}
4 方法四:
USprice (value, currency = '元', decimals = 2) => {
const digitsRE = /(\d{3})(?=\d)/g;
value = parseFloat(value);
if (!value && value !== 0) return '';
const stringified = Math.abs(value).toFixed(decimals);
const $int = decimals ? stringified.slice(0, -1 - decimals) : stringified;
const i = $int.length % 3;
const head = i > 0 ? ($int.slice(0, i) + ($int.length > 3 ? ',' : '')) : '';
const $float = decimals ? stringified.slice(-1 - decimals) : '';
const sign = value < 0 ? '-' : '';
return `${sign}${head}${$int.slice(i).replace(digitsRE, '$1,')}${$float} ${currency}`;
};