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=" ...
随机推荐
- Linux运维工程师成长路线及应实现的目标
作为一名运维工程师,需要学习的东西非常多,在学习的过程中也没有任何捷径可言,必须一步一个脚印地学习.积累才能把个人技能提升到相应的高度.根据目前流行的发行版及国际流行的Linux认证,红帽认证和LPI ...
- QT多个UI文件加入一个项目
这样可在多个UI界面上进行分部开发.避免都在一个UI下太凌乱…… 在网上找了一些资料,很少有介绍这方面的,以及类似这样项目的源码. 看 一些基本控件的使用时,想到了一种方法:使用gridLayout控 ...
- qtablewidget qss加上这个,QHeaderView::section
qtablewidget qss加上这个,QHeaderView::section { color: white; padding: 4px; height:24px; b ...
- ajax,文件上传,分页器
一.Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...
- dedecms自学
[dedecms笔记] index.htm 主页模板head.htm 列表头部模板footer.htm ...
- 面试官:你了解过Redis对象底层实现吗
上一章我们讲了Redis的底层数据结构,不了解的人可能会有疑问:这个和平时用的五大对象有啥关系呢?这一章我们就主要解释他们所建立的联系. 看这个文件之前,如果对ziplist.skiplist.int ...
- # 构建以及运行Springboot Docker镜像时的变量传递
Docker可以把我们的运行环境打包,然后我们只要run就可以了.大部分hello world都是这么写的.但都缺少了实际应用环节.以springboot为例,hello world的Dockerfi ...
- 使用Gson封装和解析JSON
案例:判断用户名是否存在 在jsp页面使用ajax $("#username").change(function(){ var username = $(this).val(); ...
- 09 Javascript的伪数组 arguments
arguments代表的是实参.有个讲究的地方是:arguments只在函数中使用. (1)返回函数实参的个数:arguments.length 例子: fn(2,4); fn(2,4,6); fn( ...
- 系统学习 Java IO (十六)----这么多类,应该用哪个?
目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...