js 金额千分位转换

2023-11-05

1.数字转千分位

​
/*
 * 默认返回当前数字千分位格式
 * 参数说明:
 * number:要格式化的数字
 * decimals:保留几位小数
 * dec_point:小数点符号
 * thousands_sep:千分位符号
 * roundtag:舍入参数,默认 "ceil" 向上取,"floor"向下取,"round" 四舍五入
 * 默认为保留两位小数,以逗号隔开,四舍五入
 * */
export function formatCurrency(
  number: string | number,
  decimals = 2,
  dec_point = '.',
  thousands_sep = ',',
  roundtag = 'round'
) {
  if (isEmpty(number)) {
    return null
  } else {
    number = (number + '').replace(/[^0-9+-Ee.]/g, '')
    roundtag = roundtag || 'ceil' // "ceil","floor","round"
    const n = !isFinite(+number) ? 0 : Number(number) // 检查number是否是无穷大
    const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
    const sep = typeof thousands_sep === 'undefined' ? ',' : thousands_sep
    const dec = typeof dec_point === 'undefined' ? '.' : dec_point
    let s: any = ''
    const toFixedFix = function(n: number, prec: number) {
      const k = Math.pow(10, prec) // 10 的 prec 次幂

      return (
        '' +
        parseFloat(
          Math[roundtag](parseFloat((n * k).toFixed(prec * 2))).toFixed(
            prec * 2
          )
        ) /
        k
      ) // 解析一个字符串,并返回一个浮点数。
    }
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
    const re = /(-?\d+)(\d{3})/
    while (re.test(s[0])) {
      s[0] = s[0].replace(re, '$1' + sep + '$2')
    }

    if ((s[1] || '').length < prec) {
      s[1] = s[1] || ''
      s[1] += new Array(prec - s[1].length + 1).join('0')
    }
    // 当数字位数过长去除科学计数法
    return toNonExponential(s.join(dec))
  }
}

​

2.将科学计数法转换为小数

/**
 * 将科学计数法转换为小数
 * @param num
 * @returns
 */
export function toNonExponential(num: any) {
  if (num.indexOf('E') !== -1 || num.indexOf('e') !== -1) {
    // 验证是否为科学计数法
    const m = num.toExponential().match(/\d(?:\.(\d*))?e([+-]\d+)/)
    return num.toFixed(Math.max(0, (m[1] || '').length - m[2]))
  } else {
    return num
  }
}

3.去除千分位

/**
 * 去除千分位
 *@param{Object}num
 */

export function delcommafy(num: any) {
  if (num === null) {
    return null
  }
  if ((num + '').trim() === '') {
    return ''
  }
  num = String(num).replace(/,/gi, '')
  return num
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js 金额千分位转换 的相关文章

随机推荐

  • 恐龙酷跑(python)

    恐龙酷跑小游戏 摘要 一 引言 二 系统结构 三 实现代码 四 运行结果 五 总结和展望 摘要 论述了Python语言中Pygame库的框架结构和一些常用的该库API 使用Python库进行2D游戏开发时需要注意的事项 以及进行2D游戏开发
  • 【Docker】Docker安装telnet

    文章目录 1 概述 1 概述 在使用docker容器时 有时候里边没有安装telnet 敲vim命令时提示说 telnet command not found 这个时候就需要安装vim 可是当你敲apt get install telnet
  • error LNK2019: 无法解析的外部符号 Netbios,该符号在函数 “unsigned char * __cdecl getMACAddress(unsigned char * cons

    我已经正确的加了库 头文件也能找到了 但是还是出现这个问题 说明还是库有问题 原因是我加入的是dcmtk库 是通信有关的 所以还需要在头文件位置加上如下的代码 pragma comment lib netapi32 lib
  • 元数据编辑器--(坑集锦)

    概述 Angular中的输入输出是通过注解 Input和 Output来标识 它位于组件控制器的属性上方 输入输出针对的对象是父子组件 我借鉴的博客地址 https segmentfault com a 1190000007890167 1
  • 人像抠图学习笔记

    目录 人脸分割BiseNetV2 u2net 人脸分割BiseNetV2 宣传的 BiSeNet V2出来了 72 6 的mIOU 156FPS的速度 让分割飞起来 模型30多m TensorFlow平台的 cpu版时间80ms 人脸抠图
  • 两个排序后数组中是否存在相同数字

    因为两个数组都是排好序的 所以只要一次遍历就行了 首先设两个下标 分别初始化为两个数组的起始地址 依次向前推进 推进的规则是比较两个数组中的数字 小的那个数组的下标向前推进一步 直到任何一个数组的下标到达数组末尾时 如果这时还没碰到相同的数
  • Linux下的find指令

    一 概述 因为Linux下面一切皆文件 经常需要搜索某些文件来编写 所以对于linux来说find是一条很重要的命令 linux下面的find指令用于在目录结构中搜索文件 并执行指定的操作 它提供了相当多的查找条件 功能很强大 在不指定查找
  • 第23章组织通用管理

    组织通用管理是项目管理的关键前提和基础 它为项目管理提供思想路线和基本原则与方法 项目管理则是通用管理方法在特定场景下的具体表现 在把项目管理方法运用于实际工作的时候总会表现其通用的方法 反过来说 通用的方法又必定会支配和制约着人们对项目管
  • 理解 Linux 网络栈:Linux 网络协议栈简单总结

    1 Linux 网络路径 1 1 发送端 1 1 1 应用层 1 Socket 应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的 Linux Socket 是从 BSD Socket
  • Window10文件在另一个程序中打开无法删除

    1 打开任务管理 点详细信息 2 打开性能 gt 3 打开下方的 资源监视器 4 句柄中输入文件名 5 鼠标右键结束进程 就可以删除文件啦
  • matlab判断cell为空,问与答1:在VBA代码中如何判断单元格是否为空?

    问 如下图所示的工作表 我希望使用VBA代码将空行的背景色设置为灰色 以便于查看 即将上半部分的工作表变为下半部分的样式 我需要判断某行的单元格为空 然后将该行相应的单元格背景色设置为灰色 如何判断单元格是否为空 答 先看看实现所需效果的代
  • 普通人可以做的七个小众副业,让你告别死工资

    现在有什么副业又简单又可以赚得一定的收入呢 当然是有的 下面分享七个适合普通人操作的七个小众副业 1 手工制品 现在手工制品越来越贵 可以做的种类也很多 比如粘土 针织 滴胶 奶油 手机壳 发夹之类的 又是兴趣 又能赚钱 一举两得 可以在一
  • OPF 难解case

    14bus case 当前线路功率极限为Slmax 调整为0 89 Slmax OPF收敛 调整为0 93 1 0001 Slmax OPF不收敛 调整为1 1 Slmax OPF 收敛 其实整个计算过程中 line flow 是not a
  • 数据结构中的顺序表和链表

    目录 1 顺序表 1 1 存储结构 1 2 顺序表特点 1 3 顺序表应用场景 2 链表 2 1 存储结构 最近在复习数据结构中的线性表 下面总结一下顺序表和链表的区别 1 顺序表 线性表的顺序存储称为顺序表 顺序表使得逻辑地址连续的元素在
  • 深度学习之注意力机制详解(Attention)

    深度学习之注意力机制详解 前言 一 自注意力机制 self Attention 二 代码 前言 深度学习attention机制是对人类视觉注意力机制的仿生 本质上是一种资源分配机制 生理原理就是人类视觉注意力能够以高分辨率接收于图片上的某个
  • PCB设计误区-电容的布局布线-电源是不是必须从滤波电容进入芯片管脚(2)

    PCB设计误区 电容的布局布线 电源是不是必须从滤波电容进入芯片管脚 2
  • ubuntu root密码

    Ubuntu root用户默认是禁止的 需要手动打开才行事实上ubuntu下的所有操作都用不到root用户 由于sudo的合理使用 避免了Ubuntu root用户下误操作而产生的毁灭性问题Ubuntu root账号启用方法 其实我个人认为
  • 梅露可物语虚拟服务器,【图片】【萌新】主界面的使用方法(零基础版)【梅露可物语日服吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 那下面主要讲讲梅露可的货币们 1 钻石 钻石的主要用途有三个 一 抽抽抽 二 碎了这个钻来回复你的ap 三 战斗时候被人打败了有时可以用钻石复活 不过第三个基本是都不用的 因为两瓶元气水或两瓶勇
  • 使用python的retrying库处理尝试多次请求

    功能 一般装饰器api 特定的停止条件 限制尝试次数 特定的等待条件 每次尝试之间的指数增长的时间等待 自定义的异常进行尝试 自定义的异常进行尝试返回结果 最简单的一个使用方法是无论有任何异常出现 都会一直重新调用一个函数 方法 直到返回一
  • js 金额千分位转换

    1 数字转千分位 默认返回当前数字千分位格式 参数说明 number 要格式化的数字 decimals 保留几位小数 dec point 小数点符号 thousands sep 千分位符号 roundtag 舍入参数 默认 ceil 向上取