您当前的位置:首页 > 文章 > js/javaScript实现金额千分位

js/javaScript实现金额千分位

作者:小坏 时间:2024-07-29 阅读数:583 人阅读

作为前端开发,我们都知道,在实际的需求开发中,难免会遇到需要将接口返回的金额进行千分位格式化的场景。千分位后的金额便于阅读,提升用户体验。金额千分位可以由前端来处理,也可以后端处理后返回给前端展示。

下边就来贴一下前端的两种实现方式:
const checkNaN = (value, cb) => {
  const val = parseFloat(value)
  return isNaN(val) ? undefined : cb(val)
}

// 保留小数
export const decimal = (value, precision = 2) => checkNaN(value, v => v.toFixed(precision))

// 金额千分位
export const currency = (() => {
  return (v, precision = 2) => {
    const [n, d = []] = decimal(v, precision).toString().split('.')
    return [n.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')].concat(d).join('.')
  }
})() 
以上代码中,currency方法采用了闭包的方式返回了一个函数,该函数接收两个参数,第一个参数为需要千分位的金额数字,第二个参数为需要保留的小数,默认保留两位小数且四舍五入。 decimal方法是用来保留小数的,在其内部还会用checkNaN方法对传进来的参数进行数值类型的判断。 
n.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') 
该代码使用正则表达式来匹配千分位的位置,然后通过 replace 方法将匹配到的位置插入逗号进行格式化。 
使用方式:
currency(100000.23567, 4) // '100,000.2357' 
方法二: 
const currency = v => {
  let val = parseFloat(v)
  val = isNaN(val) ? undefined : val
  return val.toLocaleString()
}
该方法相当的简单粗暴,toLocaleString 可以直接将金额进行千分位格式化,不过该方法默认最多保留三位小数且小数位超过三位时第三位会四舍五入。
使用方式: 
currency('1235689.2357') // '1,235,689.236' 
关于toLocaleString方法,还有其他比较好玩的操作,比如: 
const a = 1 a.toLocaleString('zh', { style:'percent' }) // 100%

const b = 2
b.toLocaleString('zh', { style:'percent' }) // 200%

const d = 0.9
d.toLocaleString('zh', { style:'percent' }) // 90%

new Date().toLocaleString() // '2023/11/2 下午3:03:03'

new Date().toLocaleString('chinese', { hour12:false }) // '2023/11/2 15:03:21'
来源:https://www.cnblogs.com/tnnyang/p/17805500.html

本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com