/***
* 数字格式化(适合金融产品截断小数位后展示)
* @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数字格式化(截断格式化或四舍五入格式化)的更多相关文章

  1. 好用的JS数字格式化

    /* *js格式化数字代码 * *value: 要格式化的数字值 *scale: 最多保留几位小数 *zeroed: 是否保留尾0 *percented: 是否转称百分比形式 * */ functio ...

  2. Java学习-047-数值格式化及小数位数四舍五入

    此小工具类主要用于数值四舍五入.数值格式化输出,很简单,若想深入研究,敬请自行查阅 BigDecimal 或 DecimalFormat 的 API,BigDecimal.setScale(位数,四舍 ...

  3. 好用的jquery.animateNumber.js数字动画插件

    在做公司的运营报告页面时,有一个数字累计增加的动画效果,一开始,毫无头绪,不知如何下手,于是上网查资料,发现大多都是用的插件来实现的,那么今天,我也来用插件jquery.animateNumber.j ...

  4. js数字位数太大导致参数精度丢失问题

    最近遇到个比较奇怪的问题,js函数里传参,传一个位数比较大,打印arguments可以看到传过来的参数已经改变. 然后查了一下,发现确实是js精度丢失造成的.我的解决方法是将数字型改成字符型传输,这样 ...

  5. 超简单的js数字验证

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  6. JS数字键盘

    JS数字键盘,JS小键盘 CSS代码: #numberkeyboard { border: 1px solid #b3b3b3; background: #f2f3f7; height: 285px; ...

  7. js实现文字截断

    先前用jq做了一个文字截断功能,但是不用jq的项目要实现此功能还要引如jq显得过于麻烦.这里写了一个js的文字截断功能.直接上代码. HTML(测试用的): <div>我是pox我是pox ...

  8. 再议 js 数字格式之正则表达式

    原文:再议 js 数字格式之正则表达式 前面我们提到到了js的数字格式<浅谈 js 数字格式类型>,之前的<js 正则练习之语法高亮>里也提到了优化数字匹配的正则.不过最近落叶 ...

  9. 浅谈 js 数字格式类型

    原文:浅谈 js 数字格式类型 很多人也许只知道 ,123.456,0xff 之类的数字格式.其实 js 格式还有很多数字格式类型,比如 1., .1 这样的,也有 .1e2 这样的. 可能有人说这是 ...

  10. js数字滑动时钟

    js数字滑动时钟: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

随机推荐

  1. Qt的槽可以使用默认参数

    引用自:http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/ 的一篇经典文章,是关于Qt的信号和槽的分析的.看年份 ...

  2. Linux基础(二)

    网卡的启动与关闭 ipup ens33 启动网卡 ifdown 关闭网卡 普通用户没有该权限 root用户,管理员,普通用户的权限 root 至高无上的 root用户所在的组是root组 ​ 管理员 ...

  3. Spring Boot从入门到实战:集成AOPLog来记录接口访问日志

    日志是一个Web项目中必不可少的部分,借助它我们可以做许多事情,比如问题排查.访问统计.监控告警等.一般通过引入slf4j的一些实现框架来做日志功能,如log4j,logback,log4j2,其性能 ...

  4. Redis 学习笔记(篇一):字符串和链表

    本次学习除了基本内容之外主要思考三个问题:why(为什么).what(原理是什么).which(同类中还有哪些类似的东西,相比有什么区别). 由于我对 java 比较熟悉,并且 java 中也有字符串 ...

  5. 03 我的第一个html页面

    <!--定义文档的类型,一个html就是一个文档--> <!DOCTYPE html> <html lang="en"> <!--head ...

  6. 分享Sql Server 2008 r2 数据备份,同步服务器数据(二.本地发布,订阅)

    上一篇文章中写到了数据库的本地备份,这一篇主要分享一下关于不同服务器的数据备份,主要是使用sql server中的本地发布,本地订阅功能,在数据库的读写分离中,也会经常性的用到这个功能. 复制-> ...

  7. mysql数据库之表关系

    外键 前戏之一对多关系 # 定义一张部门员工表id name gender dep_name dep_desc1 jason male 教学部 教书育人2 egon male 外交部 漂泊游荡3 ta ...

  8. 长春理工大学第十四届程序设计竞赛(重现赛)H

    H .Arithmetic Sequence 题目链接:https://ac.nowcoder.com/acm/contest/912/H 题目 数竞选手小r最喜欢做的题型是数列大题,并且每一道都能得 ...

  9. .netcore Control调用View方法

    控制器代码如下: 视图代码如下: 完整项目代码参考网址:https://github.com/gamecc666/BackTipFrontProject 版权声明:本文为博主原创文章,如需转载,请标明 ...

  10. Python连载21-collections模块

    一.collections模块 1.函数namedtuple (1)作用:tuple类型,是一个可命名的tuple (2)格式:collections(列表名称,列表) (3)​返回值:一个含有列表的 ...