5个javascript的数字格式化函数分享


Posted in Javascript onDecember 07, 2011

十进制四舍五入
这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:
代码1:

function CurrencyFormatted(amount) { 
var i = parseFloat(amount); 
if(isNaN(i)) { i = 0.00; } 
var minus = ''; 
if(i < 0) { minus = '-'; } 
i = Math.abs(i); 
i = parseInt((i + .005) * 100); 
i = i / 100; 
s = new String(i); 
if(s.indexOf('.') < 0) { s += '.00'; } 
if(s.indexOf('.') == (s.length - 2)) { s += '0'; } 
s = minus + s; 
return s; 
} 
/** 
* Usage: CurrencyFormatted(12345.678); 
* result: 12345.68 
**/

代码2:
function format_number(pnumber,decimals){ 
if (isNaN(pnumber)) { return 0}; 
if (pnumber=='') { return 0}; 
var snum = new String(pnumber); 
var sec = snum.split('.'); 
var whole = parseFloat(sec[0]); 
var result = ''; 
if(sec.length > 1){ 
var dec = new String(sec[1]); 
dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals))); 
dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals)); 
var dot = dec.indexOf('.'); 
if(dot == -1){ 
dec += '.'; 
dot = dec.indexOf('.'); 
} 
while(dec.length <= dot + decimals) { dec += '0'; } 
result = dec; 
} else{ 
var dot; 
var dec = new String(whole); 
dec += '.'; 
dot = dec.indexOf('.'); 
while(dec.length <= dot + decimals) { dec += '0'; } 
result = dec; 
} 
return result; 
} 
/** 
* Usage: format_number(12345.678, 2); 
* result: 12345.68 
**/

添加逗号
这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。
代码1:
function CommaFormatted(amount) { 
var delimiter = ","; // replace comma if desired 
amount = new String(amount); 
var a = amount.split('.',2) 
var d = a[1]; 
var i = parseInt(a[0]); 
if(isNaN(i)) { return ''; } 
var minus = ''; 
if(i < 0) { minus = '-'; } 
i = Math.abs(i); 
var n = new String(i); 
var a = []; 
while(n.length > 3) 
{ 
var nn = n.substr(n.length-3); 
a.unshift(nn); 
n = n.substr(0,n.length-3); 
} 
if(n.length > 0) { a.unshift(n); } 
n = a.join(delimiter); 
if(d.length < 1) { amount = n; } 
else { amount = n + '.' + d; } 
amount = minus + amount; 
return amount; 
} 
/** 
* Usage: CommaFormatted(12345678); 
* result: 12,345,678 
**/

代码2:
function addCommas(nStr) { 
nStr += ''; 
var x = nStr.split('.'); 
var x1 = x[0]; 
var x2 = x.length >; 1 ? '.' + x[1] : ''; 
var rgx = /(d+)(d{3})/; 
while (rgx.test(x1)) { 
x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
} 
return x1 + x2; 
} 
/** 
* Usage: addCommas(12345678); 
* result: 12,345,678 
**/

数字格式化,来自PHP
这段javascript代码功能设计来自PHP的nubmer_format功能。能够四舍五入并且加入逗号分隔。而且可以自定义10进制分隔。
function number_format (number, decimals, dec_point, thousands_sep) { 
number = (number + '').replace(/[^0-9+-Ee.]/g, ''); 
var n = !isFinite(+number) ? 0 : +number, 
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), 
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, 
dec = (typeof dec_point === 'undefined') ? '.' : dec_point, 
s = '', 
toFixedFix = function (n, prec) { 
var k = Math.pow(10, prec); 
return '' + Math.round(n * k) / k; 
}; 
// Fix for IE parseFloat(0.55).toFixed(0) = 0; 
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); 
if (s[0].length > 3) { 
s[0] = s[0].replace(/B(?=(?:d{3})+(?!d))/g, sep); 
} 
if ((s[1] || '').length < prec) { 
s[1] = s[1] || ''; 
s[1] += new Array(prec - s[1].length + 1).join('0'); 
} 
return s.join(dec); 
} 
/** 
* Usage: number_format(123456.789, 2, '.', ','); 
* result: 123,456.79 
**/

添加一个英文的排序后缀
Number.prototype.toOrdinal = function() { 
var n = this % 100; 
var suffix = ['th', 'st', 'nd', 'rd', 'th']; 
var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]); 
return this + ord; 
} 
/* 
* Usage: 
* var myNumOld = 23 
* var myNumNew = myNumOld.toOrdinal() 
* Result: 23rd 
*/

除去非数字的字符
function stripNonNumeric( str ) 
{ 
str += ''; 
var rgx = /^d|.|-$/; 
var out = ''; 
for( var i = 0; i < str.length; i++ ) 
{ 
if( rgx.test( str.charAt(i) ) ){ 
if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) || 
( str.charAt(i) == '-' && out.length != 0 ) ) ){ 
out += str.charAt(i); 
} 
} 
} 
return out; 
} 
/* 
* Usage: stripNonNumeric('123et45dhs6.789'); 
* Result: 123456.789 
*/
Javascript 相关文章推荐
广告显示判断
Aug 31 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
Feb 12 Javascript
基于jquery tab切换(防止页面刷新)
May 23 Javascript
img onload事件绑定各浏览器均可执行
Dec 19 Javascript
jquery ajax中使用jsonp的限制解决方法
Nov 22 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
May 12 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
Oct 25 Javascript
JS实现验证码倒计时的注册页面
Jan 02 Javascript
浅谈vue项目可以从哪些方面进行优化
May 05 Javascript
纯js实现无缝滚动功能代码实例
Feb 21 Javascript
Vite和Vue CLI的优劣
Jan 30 Vue.js
TimergliderJS 一个基于jQuery的时间轴插件
Dec 07 #Javascript
autoPlay 基于jquery的图片自动播放效果
Dec 07 #Javascript
浅析Prototype的模板类 Template
Dec 07 #Javascript
js 幻灯片的实现
Dec 06 #Javascript
字符串的replace方法应用浅析
Dec 06 #Javascript
js滚动条回到顶部的代码
Dec 06 #Javascript
javascript检测浏览器flash版本的实现代码
Dec 06 #Javascript
You might like
php date与gmdate的获取日期的区别
2010/02/08 PHP
php通过session防url攻击方法
2014/12/10 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
php实现图片压缩处理
2020/09/09 PHP
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Django如何实现上传图片功能
2019/08/16 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
安全生产目标管理责任书
2014/07/25 职场文书
2014年教研室工作总结
2014/12/06 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
创业计划书之面包店
2019/09/17 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技