我觉得那个函数有些问题,做了写修改,我觉得这样可以满足你的要求了 function commafy(num){ if(isNaN(num))return alert('这不是一个正确的数字') num = num+ " "; var tmp=num.split('.') var a=tmp[0]; var re=/(-?\d+)(\d{3})/; while(re.test(a)){ a=a.replace(re, "$1,$2") } num=a+'.'+tmp[1] return num; } function uncommafy(str){ var re=/\,/g; str=str.replace(re,'') if(isNaN(str))return alert('这不是一个正确的数字') return str }
这个函数只是用到正则表达式,好像ie4以上就支持了,netscape的支持情况不太清楚 1,234,567.891=>1234567.891 <script> function foo(str){ var reg=/-?[0-9,]+/g; if(reg.test(str)) return str.replace(/,/g,""); else return 0 } alert(foo("1,234,567.891")) </script>
关于精确度,ie5.5+使用alert((111.25).toFixed(5)),或者用下面这个函数代替,alert(myFixed(111.25,5)) function myFixed(num,count){ var tmp=String(num).split('.') var result=''; result=tmp[0]+'.'+tmp[1].substring(0,count) for(i=tmp[1].length;i<count;i++)result+='0'; return result }
关于精确度,ie5.5+使用alert((111.25).toFixed(5)),或者用下面这个函数代替,alert(myFixed(111.25,5)) function myFixed(num,count){ var tmp=String(num).split('.') var result=''; result=tmp[0]+'.'+tmp[1].substring(0,count) for(i=tmp[1].length;i<count;i++)result+='0'; return result }
function commafy(num){
if(isNaN(num))return alert('这不是一个正确的数字')
num = num+ " ";
var tmp=num.split('.')
var a=tmp[0];
var re=/(-?\d+)(\d{3})/;
while(re.test(a)){
a=a.replace(re, "$1,$2")
}
num=a+'.'+tmp[1]
return num;
}
function uncommafy(str){
var re=/\,/g;
str=str.replace(re,'')
if(isNaN(str))return alert('这不是一个正确的数字')
return str
}
1,234,567.891=>1234567.891
<script>
function foo(str){
var reg=/-?[0-9,]+/g;
if(reg.test(str))
return str.replace(/,/g,"");
else
return 0
}
alert(foo("1,234,567.891"))
</script>
//#################################################################################################
// 数字格式化函数
// 用法:本函数用来格式化数字。
// 参数:num(数值型):要进行格式化的数值型变量;
// decimalNum(整型) :要保留的小数位数;
// bolLeadingZero (布尔型:true或 false):对-1<num<1之间的数是否要添加前导数字0;
// bolParens (布尔型:true或 false):在负号后是否使用小括号;
// bolCommas (布尔型:true或 false):是否用“,”隔开数字位。
// 返回值:经过格式化的数字字符串。
//#################################################################################################
// 下面是例子:
alert(FormatNumber(-0.5435345254644654,5,false,true,true))function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
{
if (isNaN(parseInt(num))) return "NaN"; var tmpNum = num;
var iSign = num < 0 ? -1 : 1; // 得到数字符号
// 调整小数点位数到给定的数字。
tmpNum *= Math.pow(10,decimalNum);
tmpNum = Math.round(Math.abs(tmpNum))
tmpNum /= Math.pow(10,decimalNum);
tmpNum *= iSign; // 重新调整符号
// 把数值型转换成字符对象
var tmpNumStr = new String(tmpNum); // 处理是否有前导0
if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
if (num > 0)
tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
else
tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
//处理是否有逗号
if (bolCommas && (num >= 1000 || num <= -1000)) {
var iStart = tmpNumStr.indexOf(".");
if (iStart < 0)
iStart = tmpNumStr.length; iStart -= 3;
while (iStart >= 1) {
tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
iStart -= 3;
}
} // 处理是否有括号
if (bolParens && num < 0)
tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")"; return tmpNumStr; // 返回格式化后字符串
}
</script>
function myFixed(num,count){
var tmp=String(num).split('.')
var result='';
result=tmp[0]+'.'+tmp[1].substring(0,count)
for(i=tmp[1].length;i<count;i++)result+='0';
return result
}
function myFixed(num,count){
var tmp=String(num).split('.')
var result='';
result=tmp[0]+'.'+tmp[1].substring(0,count)
for(i=tmp[1].length;i<count;i++)result+='0';
return result
}