JavaScript 千位分隔符(逗号)表示web网页中的大数字

千位分隔符(逗号)表示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}`;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值