js数字格式化(截断格式化或四舍五入格式化)
2024-10-02 06:15:23
/***
* 数字格式化(适合金融产品截断小数位后展示)
* @param num
* @param pattern (标准格式:#,###.## 或#.## 或#,###00.00)
* @param round 1=四舍五入后格式化;0=截断格式化
* @returns {string}
*/
function formatNumber(num, pattern, round) {
if (num && !/^[\d\.]+$/g.test(num)) {
console.log("the number format is incorrect!");
return "";
} var formatLeft = "";
var formatRight = "";
var symbolFlag = pattern.lastIndexOf(".");
if (symbolFlag == -1) {
formatLeft = pattern;
} else {
formatLeft = pattern.substring(0, pattern.lastIndexOf("."));
formatRight = pattern.substring(pattern.lastIndexOf(".") + 1, pattern.length);
}
//四舍五入
if (round == 1) {
num = new Number(num).toFixed(formatRight.length);
} //格式化数字
var numberLeft = "";
var numberRight = "";
var numSymbolFlag = num.lastIndexOf(".");
if (numSymbolFlag == -1) {
var numberLeft = num;
} else {
var numberLeft = num.substring(0, num.lastIndexOf("."));
var numberRight = num.substring(num.lastIndexOf(".") + 1, num.length);
} var numberBucket = new Array();
var formatFlag = formatLeft.indexOf("#,###");//千位符标记
var count = 1;
var len = numberLeft.length;
for (var i = len; i > 0; i--) {
numberBucket.unshift(numberLeft.charAt(i - 1));
if (formatFlag != -1) {
if (count % 3 == 0 && count != len) {
numberBucket.unshift(',');
}
}
count++;
}
if (symbolFlag != -1) {
numberBucket.push('.');
}
for (var i = 0; i < formatRight.length; i++) {
if (formatRight.charAt(i) && numberRight.charAt(i)) {
numberBucket.push(numberRight.charAt(i))
} else {
numberBucket.push("0");
}
}
return numberBucket.join("");
} //测试
document.writeln(formatNumber("123456789.123456", "#") + "<br/>");
document.writeln(formatNumber("123456789.123456", "#.#")+ "<br/>");
document.writeln(formatNumber("123456789.123456", "#,###") + "<br/>");
document.writeln(formatNumber("123456789.123456", "#,###.#")+ "<br/>");
document.writeln(formatNumber("123456789.123456", "#,###.#")+ "<br/>");document.writeln(formatNumber("123456789.123456", "#,###.####")+ "<br/>");document.writeln(formatNumber("1.50", "#.#", 1) + "<br/>");document.writeln(formatNumber("1.125456", "#.#", 1) + "<br/>");document.writeln(formatNumber("1.125456", "#.##", 1) + "<br/>");
document.writeln(formatNumber("1.125456", "#.###", 1) + "<br/>");
document.writeln(formatNumber("1.125456", "#.####", 1) + "<br/>");
document.writeln(formatNumber("1.125456", "#.#####", 1) + "<br/>");
最新文章
- jQuery Lightbox图片放大预览
- java回调机制
- Android守护进程
- Network Assistant (Alpha)版使用说明
- MVC认知路【点点滴滴支离破碎】【一】----新建数据库
- jq实现鼠标移动到 图片上放大,移开图片缩小效果(打算封装成插件)
- MongoDB的学习和使用
- js输入,输出基本操作
- 【C#】属性(Attribute)
- sc.exe管理系统服务
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
- MSSQL奇技淫巧
- 求最短路径算法之SPAF算法。
- flask 部署后并发测试
- S-CMS企建v3二次SQL注入
- 07-查询操作(DQL)-多表查询
- RGB Resampler IP核的测试
- [ 测试思维 ] 启发式测试策略模型(HTSM)
- Open Source Log Management
- 数据源与JNDI资源实现JSP数据库连接池实例
热门文章
- CrashRpt_v.1.4.2_vs2008_also_ok
- 从零开始人工智能AI(一)-k-nn-矩阵
- 【spring boot】application.properties官方完整文档
- python中的内置函数(一)
- 用JavaScript刷LeetCode的正确姿势
- QSqlRelationalTableModel的Select语句会改变列的名字
- Docker容器化部署Python应用
- 解析《Effective Java》之多个构造器、Javabeans模式和Builder模式
- log4net插入access自定义字段
- kubernetes实战篇之helm使用技巧