有关JavaScript自动将金额处理并显示为元、万元、亿等

  1. 首先分析金额的单位可分为元、拾、佰、仟、万、亿、兆等
  2. 分别表示为1、10、100、1000、10000、100000000、1000000000000
  3. 去掉拾、佰、仟后元、万、亿、兆等可得规律兆为亿的10000倍、亿为万的10000倍、万为元的10000倍
  4. 则可根据此规律若得到金额数值小于10000的金额可直接使用元来表示、若是得到的金额数值大于等于10000的金额则可循环遍历将当前金额每次除以10000直至金额数值小于10000时,可根据循环次数得到当前金额的单位
function handleMoney(num) {
  // 首先先声明一个金额单位数组
  let AmountUnitlist = ["元", "万元", "亿", "兆", '京', '垓', '杼']
  // 将数字金额转为字符串
  let strnum = num.toString()
  // 声明一个变量用于接收金额单位
  let AmountUnit = ''
  // 循环遍历单位数组
  AmountUnitlist.find((item, index) => {
    let newNum = ''
    // 判断一下传进来的金额是否包含小数点
    if (strnum.indexOf('.') !== -1) {
      // 若有则将小数点前的字符截取出来
      newNum = strnum.substring(0, strnum.indexOf('.'))
    } else {
      // 没有则直接等于原金额
      newNum = strnum
    }
    // 判断一下经过小数点截取后的金额字符长度是否小于5
    if (newNum.length < 5) {
      // 若小于5则接收当前单位,并跳出迭代
      AmountUnit = item
      return true
    } else {
      // 若不小于5则将经过小数点截取处理过后的字符除以10000后作为下一轮迭代的初始金额重新判断(每一个单位之间相距4位数,故除以10000)
      strnum = (newNum * 1 / 10000).toString()
    }
  })
  let money = {num: 0, unit: ""}
  // 保留2位小数
  money.num = (strnum * 1).toFixed(2)
  // 接收单位
  money.unit = AmountUnit
  return money
}

你可能感兴趣的:(金额处理,jsvascript,javascript)