js数字格式化(截断格式化或四舍五入格式化)
/***
* 数字格式化(适合金融产品截断小数位后展示)
* @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/>");
js数字格式化(截断格式化或四舍五入格式化)的更多相关文章
- 好用的JS数字格式化
/* *js格式化数字代码 * *value: 要格式化的数字值 *scale: 最多保留几位小数 *zeroed: 是否保留尾0 *percented: 是否转称百分比形式 * */ functio ...
- Java学习-047-数值格式化及小数位数四舍五入
此小工具类主要用于数值四舍五入.数值格式化输出,很简单,若想深入研究,敬请自行查阅 BigDecimal 或 DecimalFormat 的 API,BigDecimal.setScale(位数,四舍 ...
- 好用的jquery.animateNumber.js数字动画插件
在做公司的运营报告页面时,有一个数字累计增加的动画效果,一开始,毫无头绪,不知如何下手,于是上网查资料,发现大多都是用的插件来实现的,那么今天,我也来用插件jquery.animateNumber.j ...
- js数字位数太大导致参数精度丢失问题
最近遇到个比较奇怪的问题,js函数里传参,传一个位数比较大,打印arguments可以看到传过来的参数已经改变. 然后查了一下,发现确实是js精度丢失造成的.我的解决方法是将数字型改成字符型传输,这样 ...
- 超简单的js数字验证
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
- JS数字键盘
JS数字键盘,JS小键盘 CSS代码: #numberkeyboard { border: 1px solid #b3b3b3; background: #f2f3f7; height: 285px; ...
- js实现文字截断
先前用jq做了一个文字截断功能,但是不用jq的项目要实现此功能还要引如jq显得过于麻烦.这里写了一个js的文字截断功能.直接上代码. HTML(测试用的): <div>我是pox我是pox ...
- 再议 js 数字格式之正则表达式
原文:再议 js 数字格式之正则表达式 前面我们提到到了js的数字格式<浅谈 js 数字格式类型>,之前的<js 正则练习之语法高亮>里也提到了优化数字匹配的正则.不过最近落叶 ...
- 浅谈 js 数字格式类型
原文:浅谈 js 数字格式类型 很多人也许只知道 ,123.456,0xff 之类的数字格式.其实 js 格式还有很多数字格式类型,比如 1., .1 这样的,也有 .1e2 这样的. 可能有人说这是 ...
- js数字滑动时钟
js数字滑动时钟: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
随机推荐
- Delphi 与 VC 共享接口和对象
我经常会用 Delphi 写一些工具和应用,为了扩展方便,大部分都会做成插件形式. 迫于某些原因,我的插件不得不用其他开发工具来完成,比如 VC. 于是有个大问题需要解决:如何让 D 和 VC 互相通 ...
- vuejs切换导航条高亮路由高亮做法
我的GitHub前端经验总结,喜欢的话请点star✨✨Thanks.:https://github.com/liangfengbo/frontend-develop vuejs导航条高亮我的做法: 用 ...
- TCP UDP socket http webSocket 之间的关系
---恢复内容开始--- OSI&TCP/IP模型 要弄清tcp udp socket http websocket之间的关系,首先要知道经典的OSI七层模型,与之对应的是TCP/IP的四层模 ...
- 机器学习之支持向量机原理和sklearn实践
1. 场景描述 问题:如何对对下图的线性可分数据集和线性不可分数据集进行分类? 思路: (1)对线性可分数据集找到最优分割超平面 (2)将线性不可分数据集通过某种方法转换为线性可分数据集 下面将带着这 ...
- 宜信开源|手把手教你安装第一个LAIN应用
LAIN是宜信公司大数据创新中心开发的开源PaaS平台.在金融的场景下,LAIN 是为解放各个团队和业务线的生产力而设计的一个云平台.LAIN 为宜信大数据创新中心各个团队提供了统一的测试和生产环境, ...
- Python自学day-2
一.模块 模块分两种:标准库和第三方库,标准库是不需要安装就可以使用的库. import [模块名]:导入一个库,优先是在项目路径中寻找.自定义模块名不要和标准库模块名相同. sy ...
- 系统学习 Java IO (五)----使用 SequenceInputStream 组合多个流
目录:系统学习 Java IO---- 目录,概览 SequenceInputStream 可以将两个或多个其他 InputStream 合并为一个. 首先,SequenceInputStream 将 ...
- denied: requested access to the resource is denied
1.vim /etc/docker/daemon.json 增加一个daemon.json文件 { "insecure-registries":["192.168 ...
- DFS和BFS的比较
DFS(Depth First Search,深度优先搜索)和BFS(Breadth First Search,广度优先搜索)是两种典型的搜索算法.下面通过一个实例来比较一下深度优先搜索和广度优先搜索 ...
- Ubuntu18.04安装postgresql-10
Ubuntu18安装postgresql-10 最近切换Ubuntu作为办公系统,所有软件安装都要重来一遍. 官方文档: https://www.postgresql.org/download/lin ...