千分位处理函数(超详细注释)

接单狂魔
• 阅读 913

千分位处理函数,只处理小数点左边的数字
如:12345.6789 处理为12,345.6789
若也要处理小数点右边的数字,这个方法也可以,只需要将下文的str2执行一次本方法,然后拼接结果即可。
希望能帮到你。

function thousandth (num) {
  let str = num.toString() // 数字转字符串
  let str2 = null
  // 如果带小数点
  if (str.indexOf('.') !== -1) { // 带小数点只需要处理小数点左边的
    const strArr = str.split('.') // 根据小数点切割字符串
    str = strArr[0]// 小数点左边
    str2 = strArr[1]// 小数点右边
    //如12345.678  str=12345,str2=678
  }
  let result = ''// 结果
  while (str.length > 3) { // while循环 字符串长度大于3就得添加千分位
    // 切割法 ,从后往前切割字符串 ⬇️
    result = ',' + str.slice(str.length - 3, str.length) + result 
    // 切割str最后三位,用逗号拼接 比如12345 切割为 ,345
    // 用result接收,并拼接上一次循环得到的result
    str = str.slice(0, str.length - 3) // str字符串剥离上面切割的后三位,比如 12345 剥离成 12
  }

  if (str.length <= 3 && str.length > 0) {
  // 长度小于等于3 且长度大于0,直接拼接到result
  // 为什么可以等于3 因为上面result 拼接时候在前面带上了‘,’
  // 相当于123456 上一步处理完之后 result=',456' str='123'
    result = str + result
  }
  // 最后判断是否带小数点(str2是小数点右边的数字)
  // 如果带了小数点就拼接小数点右边的str2 ⬇️
  str2 ? result = result + '.' + str2 : ''
  return result
}
点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
java常用类(2)
三、时间处理相关类Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。示例:packagecn.tanjian
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Jacquelyn38 Jacquelyn38
4年前
这些JS工具函数够你用到2020年底了
前言活不多说,自己平时搜集的干货函数奉上。干货函数找出数字在数组中下一个相邻的元素let i  "";let rr  ;const name  (n, arr1)    let num  Number(n);    for (let i  0; i < arr1.length; i)         const elemen
Wesley13 Wesley13
3年前
Java 的BigDecimal
原文:http://blog.csdn.net/diyu122222/article/details/76887382decimaldecimal(18,0)18是定点精度,0是小数位数。decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十
Wesley13 Wesley13
3年前
mysql中的round函数
在mysql中,round函数用于数据的四舍五入,它有两种形式:1、round(x,d) ,x指要处理的数,d是指保留几位小数这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;2、round(x) ,其实就是round(x,0),也就是默认d为0;下面是几个实例1、查询: selectr
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
初探 Objective
作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言异常处理是许多高级语言都具有的特性,它可以直接中断当前函数并将控制权转交给能够处理异常的函数。不同语言在异常处理的实现上各不相同,本文主要来分析一下ObjectiveC和C这两个语言。为什么要把ObjectiveC和
Wesley13 Wesley13
3年前
oracle小数点前零丢失的问题
1.问题起源 oracle数据库字段值为小于1的小数时,使用char类型处理,会丢失小数点前面的0 例如0.35就变成了.35 2.解决办法:(1)用to\_char函数格式化数字显示 select    to\_char(0.338,'fm9999999990.00')fromdual; 结果:0.34 
接单狂魔
接单狂魔
Lv1
绿杨烟外晓寒轻,红杏枝头春意闹。
文章
3
粉丝
0
获赞
0