JS里面数值是如何处理的呢?因为JS不是类型那个严格的语言,因此+号也是连接号,你可以非常简单的通过+号转换为数值,但是我们也知道JS没有很多内建的处理数据格式的函数,我们必须自己来定义,下面6个就是非常经典的6个,我们需要重头开始么?当然不需要,COPY ->PASTE
当然如果你有什么创举的话,不要仅仅将其藏在硬盘上,拿出来让大家看看。
No.1 by Matt:
NO.1 使用格式传来格式化数字,这是C里面常用的形式,当然JS里面也可以了
- /**
- * Formats the number according to the ‘format’ string;
- * adherses to the american number standard where a comma
- * is inserted after every 3 digits.
-
* note: there should be only 1 contiguous number in the format,
- * where a number consists of digits, period, and commas
- * any other characters can be wrapped around this number, including ‘$’, ‘%’, or text
- * examples (123456.789):
- * ‘0′ - (123456) show only digits, no precision不显示小数部分
- * ‘0.00′ - (123456.78) show only digits, 2 precision两位小数
- * ‘0.0000′ - (123456.7890) show only digits, 4 precision
- * ‘0,000′ - (123,456) show comma and digits, no precision
- * ‘0,000.00′ - (123,456.78) show comma and digits, 2 precision分号分隔
- * ‘0,0.00′ - (123,456.78) shortcut method, show comma and digits, 2 precision
- *
- * @method format
- * @param format {string} the way you would like to format this text
- * @return {string} the formatted number
- * @public
-
*/
-
Number.prototype.format = function(format){
-
if(! isType(format, ’string’)) {return ”;} // sanity check
-
varhasComma = -1 < format.indexOf(’,'),
-
psplit = format.stripNonNumeric().split(’.'),
-
that = this;
-
// compute precision
-
if(1 < psplit.length) {
-
// fix number precision
-
that = that.toFixed(psplit[1].length);
-
}
-
// error: too many periods
-
elseif (2 < psplit.length) {
-
throw(’NumberFormatException: invalidformat, formats should have no more than 1 period: ‘ + format);
-
}
-
// remove precision
-
else{
-
that = that.toFixed(0);
-
}
-
// get the string now that precision is correct
-
varfnum = that.toString();
-
// format has comma, then compute commas
-
if(hasComma) {
-
// remove precision for computation
-
psplit = fnum.split(’.');
- var cnum = psplit[0],
- parr = [],
- j = cnum.length,
- m = Math.floor(j / 3),
- n = cnum.length % 3 || 3; // n cannot be ZERO or causes infinite loop
- // break the number into chunks of 3 digits; first chunk may be less than 3
- for (var i = 0; i < j; i += n) {
- if (i != 0) {n = 3;}
- parr[parr.length] = cnum.substr(i, n);
- m -= 1;
- }
- // put chunks back together, separated by comma
-
fnum = parr.join(’,');
-
// add the precision back in
-
if(psplit[1]) {fnum += ‘.’ + psplit[1];}
-
}
-
// replace the number portion of the format with fnum
-
returnformat.replace(/[\d,?\.?]+/, fnum);
-
};
我们也可以注意到在荷兰或者一些国家逗号,和.号是反过来用的,如 (e.g. 1.234,56 而不是 1,234.45)但是我想转换起来也不麻烦
No.2 by Mredkj (Add commas)
NO.2高级的正则表达式实现版
-
function addCommas(nStr)
- {
-
nStr += '';
-
x = nStr.split('.');
-
x1 = x[0];
-
x2 = x.length > 1 ? '.' + x[1] : '';
-
varrgx = /(\d+)(\d{3})/;
-
while(rgx.test(x1)) {
-
x1 = x1.replace(rgx, '$1' + ',' + '$2');
-
}
-
returnx1 + x2;
- }
No.3 by netlobo(Strip Non-Numeric Characters From a String)
NO.3将非数值字符从字符串中剥离【正则表达式实现】
这个函数将字符串中的所有非数值字符从中玻璃,从而只剩下数值部分,该实现考虑了-号和.点,这两个符号不会被剥离,除非-号出现在中间,而.号超过一个
- // This function removes non-numeric characters
-
functionstripNonNumeric( str )
- {
-
str += '';
-
varrgx = /^\d|\.|-$/;
-
varout = '';
-
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);
-
}
-
}
-
}
-
returnout;
- }
No.4 by Stephen Chapman
NO.4通脱这个函数我们可以通过其8个参数任意的选择数值的不同格式化形式
- // number formatting function
- // copyright Stephen Chapman 24th March 2006, 10th February 2007
- // permission to use this function is granted provided
- // that this copyright notice is retained intact
-
functionformatNumber(num,dec,thou,pnt,curr1,curr2,n1,n2)
- {
-
varx = Math.round(num * Math.pow(10,dec));
-
if(x >= 0) n1=n2='';
-
vary = (''+Math.abs(x)).split('');
-
varz = y.length - dec;
-
if(z<0) z--;
-
for(vari = z; i < 0; i++)
-
y.unshift('0');
-
y.splice(z, 0, pnt);
-
if(y[0] == pnt)y.unshift('0');
-
while(z > 3)
-
{
-
z-=3;
-
y.splice(z,0,thou);
-
}
-
varr = curr1+n1+y.join('')+n2+curr2;
-
returnr;
- }
No.5 by java-scripts
NO.5这个函数通过一些确定的十进制格式将传入的数值格式化,注意小数值并不会被圆整
-
function format_number(pnumber,decimals){
-
if(isNaN(pnumber)) { return 0};
-
if(pnumber=='') { return 0};
-
varsnum = new String(pnumber);
-
varsec = snum.split('.');
-
varwhole = parseFloat(sec[0]);
-
varresult = '';
-
if(sec.length > 1){
-
vardec = 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));
-
vardot = dec.indexOf('.');
-
if(dot == -1){
-
dec += '.';
-
dot = dec.indexOf('.');
-
}
-
while(dec.length <= dot + decimals){ dec += '0'; }
-
result = dec;
-
}else{
-
vardot;
-
vardec = new String(whole);
-
dec += '.';
-
dot = dec.indexOf('.');
-
while(dec.length <= dot + decimals){ dec += '0'; }
-
result = dec;
-
}
-
returnresult;
- }
No.6 by geocities
-
function formatNumber (obj, decimal) {
-
//decimal - the number of decimals after the digit from 0 to 3
-
//-- Returns the passed number as a string in the xxx,xxx.xx format.
-
anynum=eval(obj.value);
-
divider =10;
-
switch(decimal){
-
case0:
-
divider =1;
-
break;
-
case1:
-
divider =10;
-
break;
-
case2:
-
divider =100;
-
break;
-
default: //for 3 decimal places
-
divider =1000;
-
}
-
workNum=Math.abs((Math.round(anynum*divider)/divider));
- workStr=""+workNum
- if (workStr.indexOf(".")==-1){workStr+="."}
- dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
- pStr=workStr.substr(workStr.indexOf("."))
- while (pStr.length-1< decimal){pStr+="0"}
- if(pStr =='.') pStr ='';
-
//--- Adds a comma in the thousands place.
- if (dNum>=1000) {
- dLen=dStr.length
-
dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
-
}
-
//-- Adds a comma in the millions place.
-
if(dNum>=1000000) {
-
dLen=dStr.length
-
dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
- }
- retval = dStr + pStr
-
//-- Put numbers in parentheses if negative.
- if (anynum<0) {retval="("+retval+")";}
-
//You could include a dollar sign in the return value.
-
//retval = "$"+retval
- obj.value = retval;
- }
How number is treated in JavaScript? JavaScript is loosely typed and the plus operator also concatenates, you can easily convert JavaScript Numbers to Strings similar to this: 1 + “”, but as we all know that JavaScript doesn’t have many built-in methods to format numbers. Most of the time we need to write our customized code to do it.The following is 6 very useful JavaScript number format function,why have to re-inventing the wheel? Don’t waste your valuable time to write it by yourself, only copy which you like and use it!
Of course if you had wrote your proudly number format function,don’t only stock in your hard disk( or your head), let’s share!
No.1 by Matt:
Basically, you can pass in a String as the format that contain any one number,and the result will replace the number in the format String with the properly formatted Number object. See the comment block for details.
- /**
- * Formats the number according to the ‘format’ string;
- * adherses to the american number standard where a comma
- * is inserted after every 3 digits.
-
* note: there should be only 1 contiguous number in the format,
- * where a number consists of digits, period, and commas
- * any other characters can be wrapped around this number, including ‘$’, ‘%’, or text
- * examples (123456.789):
- * ‘0′ - (123456) show only digits, no precision
- * ‘0.00′ - (123456.78) show only digits, 2 precision
- * ‘0.0000′ - (123456.7890) show only digits, 4 precision
- * ‘0,000′ - (123,456) show comma and digits, no precision
- * ‘0,000.00′ - (123,456.78) show comma and digits, 2 precision
- * ‘0,0.00′ - (123,456.78) shortcut method, show comma and digits, 2 precision
- *
- * @method format
- * @param format {string} the way you would like to format this text
- * @return {string} the formatted number
- * @public
-
*/
-
Number.prototype.format = function(format){
-
if(! isType(format, ’string’)) {return ”;} // sanity check
-
varhasComma = -1 < format.indexOf(’,'),
-
psplit = format.stripNonNumeric().split(’.'),
-
that = this;
-
// compute precision
-
if(1 < psplit.length) {
-
// fix number precision
-
that = that.toFixed(psplit[1].length);
-
}
-
// error: too many periods
-
elseif (2 < psplit.length) {
-
throw(’NumberFormatException: invalidformat, formats should have no more than 1 period: ‘ + format);
-
}
-
// remove precision
-
else{
-
that = that.toFixed(0);
-
}
-
color: rgb(
分享到:
相关推荐
6. **安装流程**: 解压缩文件后,通常需要运行安装程序(如“mpich.nt.1.2.5.exe”),按照提示进行配置,包括指定安装路径、选择组件、设置环境变量等。 7. **配置MPICH**: 安装后,可能需要配置MPICH以适应特定的...
标题中的"ClodOP_Setup_for_Win32NT.zip"是一个针对Windows 32位操作系统的安装包,这表明它是一款专为32位Windows系统设计的软件。"ClodOP"通常指的是Cloud Print Operation,它是一个云打印解决方案,允许用户通过...
CLodop是一款跨平台的云打印解决方案,专为Windows NT操作系统设计。它的全称可能是"Cloud Lodop Online Print",寓意着它提供了一种在线、云端的打印服务。这款组件能够帮助开发者快速集成打印功能,无论是网页应用...
在C++编程中,"nt.h" 和 "ntdll.lib" 是两个非常关键的组件,尤其是在Windows操作系统下进行系统级编程时。它们是Windows API的一部分,提供了对内核级功能的访问。 首先,我们来详细了解这两个文件: 1. **nt.h**...
在文件标题中提到的“NT5CC128M16IP-DIA.pdf”是指南亚科技(Nanya Technology Corp)生产的一款DDR3 SDRAM的PDF规格书。从标题和描述来看,这款内存的具体型号是NT5CC128M16IP-DIA,品牌为NANYA。 从描述中可以...
其中,Final.Data_1.0_NT.2k是一款专为Windows NT/2000系统设计的专业版数据恢复软件,它具备强大的数据还原能力,帮助用户在困境中找回丢失的珍贵数据。 Final.Data_1.0_NT.2k的核心功能主要体现在以下几个方面: ...
DameWare.NT.Utilities.8.0.0.102 破解版,亲测win7x64系统可破解,破解后可以使用9999天,分享给有需要的朋友
Win$Man是32/64位Win2000/XP/2003/Vista/2008/2008 R2/7的安装辅助工具,由于MS的安装程序winnt32.exe(nt 5.x)和setup.exe(nt 6.x)有部分限制,大家知道32位PE是无法直接调用winnt32.exe来安装64位系统,而且AHCI、...
CLodop_Setup_for_Win32NT.exe
2、用另外一种方式启动Mysql:在命令行进入到mysql的安装路径下的bin目录下使用mysqld-nt.exe启动:mysqld-nt –skip-grant-tables 注意:此时CMD窗口不能关闭。 mysqld-nt.exe文件下载 3、进入Mysql:另外打开一个...
在IT领域,操作系统安装是日常工作中常见的任务,而双系统设置允许用户在同一台电脑上同时运行两个不同的操作系统,如Windows XP(NT5_x)和Windows Vista/7/8/10(NT6_x)。然而,当这样的双系统环境出现问题,特别...
nt6指的是Windows Vista、Windows 7以及Windows 8系列操作系统,因为它们基于NT内核的6.0及更高版本。这个工具能够帮助用户在不使用光盘或USB驱动的情况下,通过硬盘直接安装系统,通常适用于已经拥有系统镜像文件的...
标题中的"nt6_3.0.8_XiaZaiBa.zip"似乎是一个软件或工具的版本标识,可能指的是一个Windows NT6系列操作系统的安装工具,版本为3.0.8,由“XiaZaiBa”(下载吧)提供。在IT行业中,NT6通常是指Windows Vista、...
NT6.X HDD Installer_v3.0便是这样一款专为硬盘安装操作系统设计的工具,它允许用户无需光盘或USB驱动器即可完成系统的安装,极大地简化了系统部署的流程。 NT6.x指的是Windows Vista、Windows 7、Windows 8、...
CLodopPrint_Setup_for_Win32NT_2.048_绝对可用.exe Lodop是一款专业的WEB打印控件,其设计目标是简单易用、功能足够强大,开创WEB打印开发的新局面。 Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,...
解决没有mysqld.exe -install的问题,下载直接打开可以开启mysql服务,如果不小心删除mysql服务用这个也可以。