js千分位分隔,数字货币化方法学习记录
js千分位分隔,数字货币化—4种方法(含正则)
方法1-整数货币化
// 整数货币化
function intCurrency(num) {
var reg = new RegExp("^[\\d]+[\\d|.]+$", 'g')
if (!reg.test(num)) {
return "只能为整数或小数!";
}
var numString = parseInt(num).toString();
var len = numString.length;
if (len < 3) {
return num;
}
var n = len % 3;
if (n > 0) {
return numString.slice(0, n) + "," + numString.slice(n, len).match(/\d{3}/g).join(",");
} else {
return numString.slice(n, len).match(/\d{3}/g).join(",");
}
}
console.group("------------整数货币化")
console.log(intCurrency("abs"))
console.log(intCurrency("0"))
console.log(intCurrency("10"))
console.log(intCurrency("100"))
console.log(intCurrency("1000"))
console.log(intCurrency("10000"))
console.log(intCurrency("100000"))
console.log(intCurrency("1000000"))
console.log(intCurrency("10000000"))
console.log(intCurrency("100000000"))
console.log(intCurrency("1000000000"))
console.log(intCurrency("1000000000.0"))
console.log(intCurrency("1000000000.00"))
console.log(intCurrency("1000000000.000"))
方法2-小数货币化
// 整数部分
function intCurrency(num) {
if (num === undefined) {
return '';
}
var len = num.length;
if (len < 3) {
return num;
}
var n = len % 3;
if (n > 0) {
return num.slice(0, n) + "," + num.slice(n, len).match(/\d{3}/g).join(",");
} else {
return num.slice(n, len).match(/\d{3}/g).join(",");
}
}
// 小数部分
function decimalCurrency(num) {
if (num === undefined) {
return '';
}
var len = num.length; // 小数部分长度
if (len < 3) { // 小于三位数
return num;
}
var n = len % 3;
if (n > 0) { // 位数不是3的倍数
return num.slice(0, len - n).match(/\d{3}/g).join(',') + ',' + num.slice(len - n);
} else {
return num.slice(0, len - n).match(/\d{3}/g).join(',')
}
}
// 货币化
function currency(num) {
var integerPart; // 整数部分
var decmialPart; // 小数部分
num = num.toString();
if (num.includes(".")) {
integerPart = num.split('.')[0];
decmialPart = num.split('.')[1];
} else {
integerPart = num;
}
return intCurrency(integerPart) + (decmialPart !== undefined ? ('.' + decimalCurrency(decmialPart)) : '');
}
console.group("------------整数或小数货币化")
console.log(currency("0"))
console.log(currency("10"))
console.log(currency("100"))
console.log(currency("1000"))
console.log(currency("10000"))
console.log(currency("100000"))
console.log(currency("1000000"))
console.log(currency("10000000"))
console.log(currency("100000000"))
console.log(currency("1000000000"))
console.log(currency("1000000000.0"))
console.log(currency("1000000000.00"))
console.log(currency("1000000000.000"))
console.log(currency("1000000000.0000"))
console.log(currency("1000000000.00000"))
方法3-整数正则货币化1
// 直接使用正则
function currency(num) {
num = parseInt(num);
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
console.group("------------取整数,正则货币化1")
console.log(currency("0"))
console.log(currency("10"))
console.log(currency("100"))
console.log(currency("1000"))
console.log(currency("10000"))
console.log(currency("100000"))
console.log(currency("1000000"))
console.log(currency("10000000"))
console.log(currency("100000000"))
console.log(currency("1000000000"))
console.log(currency("1000000000.0"))
console.log(currency("1000000000.00"))
console.log(currency("1000000000.000"))
console.log(currency("1000000000.0000"))
console.log(currency("1000000000.00000"))
方法4-整数正则货币化2
// 直接使用正则
function currency(num) {
num = parseInt(num);
return num.toString().replace(/(?=(\B)(\d{3})+$)/g, ',');
}
console.group("------------取整数,正则货币化2")
console.log(currency("0"))
console.log(currency("10"))
console.log(currency("100"))
console.log(currency("1000"))
console.log(currency("10000"))
console.log(currency("100000"))
console.log(currency("1000000"))
console.log(currency("10000000"))
console.log(currency("100000000"))
console.log(currency("1000000000"))
console.log(currency("1000000000.0"))
console.log(currency("1000000000.00"))
console.log(currency("1000000000.000"))
console.log(currency("1000000000.0000"))
console.log(currency("1000000000.00000"))
正则校验
// 正整数或小数 /^[0-9]+(\.[0-9]+)?$/g
// 正、负整数或小数,也可不输入正负 /^(\+|-)?\d+(\.\d+)?$/g
转载于:https://blog.csdn.net/Kindergarten_Sir/article/details/110382037
js千分位分隔,数字货币化方法学习记录的更多相关文章
- js千分位的函数
不错的js千分位函数,适用于将金额每3位用“,”分隔 /*for price using thousands separator */ function fprice(s,n){ s = parseF ...
- 封装js千分位加逗号和删除逗号
//封装js千分位加逗号和删除逗号 alert( format(2545678754.020001) ) //2,545,678,754.03 alert( format(-2545678754.02 ...
- js千分位处理
一.去掉千分位 function removeThousands(num) { var x = num.split(','); return parseFloat(x.join("" ...
- JS千分位格式化方法,以及多种方法性能比较
方法一字符串版 function toThousands(num) { var result = '', counter = 0; num = (num || 0).toString(); for ( ...
- js 千分位符号 正则方法
function toThousands(num) { return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');}
- js判断类型为数字的方法实现总汇——原生js判断isNumber()
方法一[推荐]: 最容易想到的是用typeof来判断是否是number类型 ,但是如果为NaN会被认为也是number类型,因此我们需要使用isNaN来排除NaN的情况. function isNum ...
- js中字符串转换为数字的方法
parseInt; parseFload; +; parseInt() 和 parseFloat() 函数会尝试逐个解析字符串中的字符,直到遇上一个无法被解析成数字的字符,然后返回该字符前所有数字字符 ...
- zepto.1.1.6.js源码中的each方法学习笔记
each方法接受要遍历的对象和对应的回调函数作为参数,它的作用是: 1.如果要遍历的对象是类似数组的形式(以该对象的length属性值的类型是否为number类型来判断),那么就把以要遍历的对象为执行 ...
- JS把字符串转换为数字的方法
方法: (1)Number(),强制类型转换,接受一个参数. (2)parseInt(),把字符串转换为整形数字,可以接受一个或两个参数,其中第二个参数代表转换的基数,能够正确的将二进制.八进制.十 ...
随机推荐
- JDK 8 新特性,从入门到精通
default关键字 在jdk1.8以前接口里面是只能有抽象方法,不能有任何方法的实现的. 在jdk1.8里面打破了这个规定,引入了新的关键字:default,使用default修饰方法,可以在接口里 ...
- 抖音爬虫教程,python爬虫采集反爬策略
一.爬虫与反爬简介 爬虫就是我们利用某种程序代替人工批量读取.获取网站上的资料信息.而反爬则是跟爬虫的对立面,是竭尽全力阻止非人为的采集网站信息,二者相生相克,水火不容,到目前为止大部分的网站都还是可 ...
- solidworks 2018 因动态绘制边线显示视图延迟的解决方案
每次鼠标移动到一个物体上时总是会卡顿几秒,直到完成所有边线的绘制后才可以继续进行其他操作,这体验实在是不好. 解决方案很简单,只要取消这个默认开启的动态高亮显示就可以了. 1.去 选项->系统选 ...
- Linq基础知识
开发人员不需要关心将要访问的是关系数据库还是XML数据,或是远程对象,它都采用同样的访问方式. Linq包含一系列的查询技术,其中Linq到对象是对内存进行操作,LINQ到SQL是对数据库的操作,LI ...
- Java学习_Java核心类
字符串和编码 字符串在String内部是通过一个char[]数组表示的,因此,可以按下面的写法: String s2 = new String(new char[] {'H', 'e', 'l', ' ...
- kaggle入门题Titanic
集成开发环境:Pycharm python版本:2.7(anaconda库) 用到的库:科学计算库numpy,数据分析包pandas,画图包matplotlib,机器学习库sklearn 大体步骤分为 ...
- Windows Terminal 新手入门
翻译自 Kayla Cinnamon 2020年12月17日的文章<Getting Started with Windows Terminal> [1] 安装 Windows Termin ...
- 使用node+puppeteer+express搭建截图服务
使用node+puppeteer+express搭建截图服务 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14222807.html 写在之前 一开始我们的需求 ...
- Android stdio使用时遇到的一些问题
(1)android stdio加载布局时 Exception raised during rendering: com/android/util/PropertiesMap ...
- vue项目中的路由守卫
路由守卫的意义就相当于一个保安一样,作用很大,在实际的项目中运用也是不少,也就是当客户在登陆自己账号的时候,有可能存在客户有啥事的时候,自己后台或者pc的关闭全部浏览器,没有点击退出登录,或者在退出登 ...