<script>
//#######################
//        数字格式化函数
//  用法:本函数用来格式化数字。
//  参数:num(数值型):要进行格式化的数值型变量;
// decimalNum(整型) :要保留的小数位数;
// bolLeadingZero (布尔型:true或 false):对-1<num<1之间的数是否要添加前导数字0;
// bolParens (布尔型:true或 false):在负号后是否使用小括号;
// bolCommas (布尔型:true或 false):是否用“,”隔开数字位。
//  返回值:经过格式化的数字字符串。
//#######################
//  下面是例子:
alert(FormatNumber(1234567.8,2,false,false,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>

解决方案 »

  1.   

    to 孟老大:现在您提供的还是一个比较死的功能,如逗号总是三位数一分隔,数字前面不能任意显示一些符号或文本,小数位不够是否补零,等等。
    希望有一个函数是:formatNumber( num, format )
    format可以是任意定义的格式串,如"#", "#,##0.00", "$#,###.##"
      

  2.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    // format:$,#.0
    alert(formatNumber(2323333.456712345678,"$,####,000000"));
    function formatNumber( num, format ){
    var f = 0, n = 0; // f:小数位 n:整数
    var c = "",s = 0,z = 0; // c:货币符号 s:分位数 z:四舍五入位数
    num += ""; if(num.indexOf(".")>-1){
    f = num.split(".")[1] - 0;
    n = num.split(".")[0] - 0;
    }else{
    n = num - 0;
    } var arrFormat = format.split(/[\,\.]/g);
    for(var i=0;i<arrFormat.length;i++){
    if(arrFormat[i].indexOf("0")>-1){
    z = arrFormat[i].length;
    }else if(arrFormat[i].indexOf("#")>-1){
    s = arrFormat[i].length;
    }else{
    c = arrFormat[i];
    }
    } var ss = "1";
    for(var i=0;i<z;i++){
    ss += "0";
    }
    var ss = ss - 0;
    f = Math.round(("0." + f)*ss)/ss+"";
    if(f.indexOf(".")>-1){
    f = f.split(".")[1]-0;
    }
    if(f.length<z){
    for(var i=f.length;i<z;i++){
    f += "0";
    }
    }
    n += "";
    var iStart = n.indexOf(".");
    if (iStart < 0)
    iStart = n.length; iStart -= s;
    while (iStart >= 1) {
    n = n.substring(0,iStart) + "," + n.substring(iStart,n.length)
    iStart -= s;
    }
    return c+n+"."+f;
    }
    //-->
    </SCRIPT>
    </BODY>
    </HTML>