layui 金额数据千分位_格式化金额的简单解法

很久没有写技术相关的博客了,刚好看到一个题目就想着写一个解法吧,因为简单,所以可能会比较实用。

问:请写出一个格式化金额的方法。

这个其实挺常见的,不过程序员都是比较懒的能上网搜的到的肯定不会自己写,有Git仓库的肯定直接拉来就用,我当然也不例外。

所以我就找了一个网上的方法。

//* 金额千分位加逗号,保留2位小数,不足补零,否则四舍五入// * 参数说明:// * num:要格式化的数字 string或者number// * decimals:保留几位小数// * dec_point:小数点符号// * thousandsSep:千分位符号// return 金额格式的字符串,如'1,234,567.45'// * */function number (num, decimals, thousandsSep) {    if (isNaN(num)) {        num = '0.00'    }    let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals) // 保留的位数一定是有限位数的正整数    let sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep    let s = num.toString().replace(/,/g, '') // 字符串,将,变成'';    let p = parseFloat(s) // 解析一个字符串,并返回一个浮点数    let n = isNaN(p) ? 1 : p    let formatNum = n.toFixed(prec).toString().replace(/(d)(?=(d{3})+.)/g, function ($0, $1) {        return $1 + sep    })    return num ? formatNum : ''}// let num = number(333322.8199, 5,'')// console.log(num,'nm')

恩。。。其实也蛮简单的,但是看到正则了,正则对萌新其实是不友好的,所以我就自己又写了一个,希望对你有帮助吧。

 /**@number:需要格式化的数字@decimals:小数点位数@separator:千分位分割符**/function formatNumber(number,decimals,separator){  if(isNaN(Number(number))){    return "0"  }  let _separator = separator||",";  let _decimals = decimals||2;  let numberStr =   number.toFixed(_decimals);  let splitArray = numberStr.split(".");  let left = splitArray[0];  let right = splitArray[1];  let array = left.split('').reverse();  let array2 = []  for(let i = 0; i < array.length; i++){    if(i>0&&i%3===0){      array2.push(_separator);    }    array2.push(array[i]);  }  return array2.reverse().join("")+"."+right;}let number = 20200421.56787;formatNumber(number);console .log(formatNumber(number,3,null))//20,200,421.57

我的思路其实比较简单,线分割小数点,整数部分处理千分位,处理方法也比较常见,就是字符串和数组的一些方法,先把数组倒转,然后循环插入分隔符。

好了,就这样吧。如果你记不住正则,那么这个解法适合。

最后反思一下, 阿里给的第一轮笔试就挂了,啊哈哈,三个题目就做了两个半,题目都很简单,是我自己没准备,虽然我比较讨厌刷题,但是如果你是为了一份工作的话,尤其是大厂,还是考虑下刷题吧,虽然拿到了别的offer。

cb013d0c687d191ef8d682c063d2c3ea.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS千分数字格式化是一种将数字以千分隔的形式呈现的方法。其中有多种实现方法,可以通过字符串的分割、拼接、遍历以及正则表达式等技巧来实现。这些方法可以帮助我们将数字中的每三添加一个逗号,以提高数字的可读性。 举例来说,我们可以使用正则表达式将数字的数补足为3的倍数,然后将其切割成每三个数字一个分组,再通过join方法添加逗号,最后移除补充的0。这种方法被称为懒人法,可以实现简洁高效的千分格式化。 另外,还有其他实现方法,比如使用递归、使用toLocaleString()方法等等。每种方法都有其适用的场景和优缺点,可以根据具体需求选择相应的方法来进行千分数字格式化。 总结而言,JS千分数字格式化是一种通过添加逗号将数字以千分隔的方式来提高数字可读性的方法。它可以通过多种实现方法来达到这个目的,包括字符串操作、遍历、正则表达式等。根据具体情况,选择合适的实现方法可以使代码更加简洁高效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JS数字千分格式化实现方法总结](https://download.csdn.net/download/weixin_38612527/12985940)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JS实现的4种数字千格式化方法分享](https://blog.csdn.net/hzxOnlineOk/article/details/121752954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值