js/javaScript实现金额千分位
作为前端开发,我们都知道,在实际的需求开发中,难免会遇到需要将接口返回的金额进行千分位格式化的场景。千分位后的金额便于阅读,提升用户体验。金额千分位可以由前端来处理,也可以后端处理后返回给前端展示。
下边就来贴一下前端的两种实现方式:
方法一:
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'
js/javaScript实现金额千分位的更多相关文章
- js jquery版本的 金额千分位转换函数(非正则,效率极高)
没想到js里面没有 金额千分位格式化的处理函数(例:1,234.01 这样的格式),网上搜了一圈,都是使用正则的方式处理的.正则的效率不敢恭维啊,又耗费资源速度又慢(虽然处理起来会直观一些). 因此专 ...
- [js开源组件开发]数字或金额千分位格式化组件
数字或金额千分位格式化组件 这次距离上一个组件<[js开源组件开发]table表格组件>时隔了一个月,由于最近的项目比较坑,刚挖完坑,所以来总结性提出来几个组件弥补这次的空缺,首先是金额和 ...
- js jquery版本号 金额千分之一转换功能(非规范,高效率)
没想到js将没有 金额千分之一格处理器类型(例子:1,234.01 这种格公式).互联网搜索圈,我们使用的是常规方式.常规效率受宠若惊啊.和资源密集型,速度慢(虽然处理起来会很直观). 因此专门写一个 ...
- Highchar.js插件提示框千分位显示为空格而不是逗号 --(2018 08/06-08/12周总结)
1.Oracle在已经存在主键的表中插入复合主键的SQL语句 如已有一个表test_key,其中a1列为主键. CREATE TABLE TEST_KEY( A1 VARCHAR2(3) NOT NU ...
- Js笔试题之千分位格式化
用js实现如下功能,将给定的数字转化成千分位的格式,如把“10000”转化成“10,000”,并考虑到性能方面的因素. 一.首先想到的办法,将数字转换为字符串(toString())再打散成数组(sp ...
- js将数字转为千分位/清除千分位
/** * 千分位格式化数字 * * @param s * 传入需要转换的数字 * @returns {String} */ function formatNumber(s) { if (!isNaN ...
- SQL 金额千分位显示
第一种:select convert(varchar,cast(_money AS MONEY),1) AS _money -----带小数点的第二种: select reverse(stuff(re ...
- C#金额千分位分隔
"234234".ToString("C") 显示:¥234,234
- js数字格式化为千分位
方法1: 浏览器自带的一个方法 const num=12345.6789 num.toLocaleString();=>"12,345.679" 方法2: 正则匹配 func ...
- Grid数字或金额千分位或保留两位小数
formatter: 'number', formatoptions: { thousandsSeparator: "", decimalPlaces: 2 }
随机推荐
- 【原创】Ftrace使用及实现机制
Ftrace使用及实现机制 版权声明:本文为本文为博主原创文章,转载请注明出处 https://www.cnblogs.com/wsg1100 如有错误,欢迎指正. 目录 Ftrace使用及实现机制 ...
- Java架构师之路:从Java码农到年薪八十万,最牛Java架构师进阶路线
Java架构师之路:从Java码农到年薪八十万,最牛Java架构师进阶路线 摘要:本文将为Java开发工程师提供一条从Java码农到年薪八十万的进阶之路,探讨如何成为一名顶尖的Java架构师.我们将介 ...
- MyBatis理论
MyBatis简介 MyBatis是什么? MyBatis是一款优秀的持久层框架,一个ORM(对象关系映射)框架,它支持定制化SQL.存储过程以及高级映射.MyBaits避免了几乎所有JDBC代码和手 ...
- AI回答打鸟问题
GPT-3.5 树上有9只鸟,猎枪打下来1只,还剩几只? 如果猎枪打下来1只鸟,那么树上剩下的鸟应该是8只.
- FPGA学习之乒乓操作
乒乓操作学习记录如下: 乒乓操作" 是一个常常应用于数据流控制的设计思想, 典型的乒乓操作方法如下图 所示: 乒乓操作的处理流程为:输入数据流通过" 输入数据选择单元"将 ...
- [python]格式化字符串的几种方式
目录 方式一:C风格%操作符 方式二:内置的format函数与str类的format方法 方式三:插值格式字符串 python中有以下几种方法可以格式化字符串 方式一:C风格%操作符 这种方法偏C语言 ...
- 解码Transformer:自注意力机制与编解码器机制详述与代码实现
本文全面探讨了Transformer及其衍生模型,深入分析了自注意力机制.编码器和解码器结构,并列举了其编码实现加深理解,最后列出基于Transformer的各类模型如BERT.GPT等.文章旨在深入 ...
- docker swarm 使用详解
转载请注明出处: 1.docker swarm 的组成架构 一个基本的docker swarm 的架构如下: 它主要包含这几个核心组件: Manager节点(Manager Nodes): 管理节点是 ...
- mybatis系列: 简介以及使用
目录 一.简介 二.简单使用 一.简介 MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD. MyBatis在三层架构中负责持久层的,属于持久层框架. MyBatis的发展历程: ...
- 重复的dna序列
DNA序列 由一系列核苷酸组成,缩写为 'A', 'C', 'G' 和 'T'.. 例如,"ACGAATTCCG" 是一个 DNA序列 . 在研究 DNA 时,识别 DNA 中的重 ...