通用js模块03:formatutils.js

/* ===========================================================
模块说明:对于javascript字符串操作的一些补充功能
charset:gb2312
调用模块:stringutils.js
搜集整理:sagahu@163.com
最后修订:2011-12-12
*/


// 把给定非负整数按照指定位数要求格式化为编码
function coding(uint, len) {
    var code = '00000000000000000000000' + uint.toString();
    return code.substring(code.length - len, code.length);
}

// 格式化浮点数的显示:每3位一“,”分隔,小数点后保留指定精度位数。
function formatFloat(value, prec) {
    var value1 = (Math.round(value * Math.pow(10, prec)) / Math.pow(10, prec)).toString();

    var arr = value1.split('.');
    var left = arr[0];
    var right = arr[1] == null ? '00000000000000000000' : arr[1] + '00000000000000000000';

    var left2 = '';
    for (j = left.length - 1; j >= 0; j--) {
        left2 = left.charAt(j) + left2;
        if ((left.length - j) == left.length) break;
        if ((left.length - j) % 3 == 0) left2 = ',' + left2;
    }

    var right2 = '';
    for (i = 0; i < right.length; i++) {
        right2 += right.charAt(i);
        if ((i + 1) == prec) break;
        if ((i + 1) % 3 == 0) right2 += ',';
    }

    return left2 + '.' + right2;
}
// 从格式化浮点数字符串还原为浮点数
function formatFloatReverse(floatStr) {
    return parseFloat(floatStr.replace(/,/g, ''));
}

// 从小写货币数值转换为汉字大写字符串
function bigMoney(value) {
    var intFen, i;
    var strArr, strCheck, strFen, strDW, strNum, strBig, strNow;

    if (trim(value) == "") {
        return "零";
    }
    if (isNaN(value)) {
        strErr = "数据" + value + "非法!";
        alert(strErr);
        return "";
    }
    strCheck = value + ".";
    strArr = strCheck.split(".");
    strCheck = strArr[0];
    var len = strCheck.length;
    if (len > 12) {
        strErr = "数据" + value + "过大,无法处理!";
        alert(strErr);
        return "";
    }
    try {
        i = 0;
        strBig = "";
        var s00 = "00";
        var svalue = value + "";
        var ipos = svalue.indexOf(".");
        var iiLen = svalue.length;
        if (ipos < 0) {
            strFen = svalue + "00";
        } else if (ipos == iiLen - 2) {
            strFen = svalue.substring(0, iiLen - 2) + svalue.substring(iiLen - 1, iiLen) + "0";
        } else if (ipos == iiLen - 3) {
            strFen = svalue.substring(0, iiLen - 3) + svalue.substring(iiLen - 2, iiLen);
        } else {
            strFen = svalue.substring(0, ipos) + svalue.substring(ipos + 1, ipos + 3);
        }
        intFen = strFen.length;
        strArr = strFen.split("");
        while (intFen != 0) {
            i = i + 1;
            switch (i) {
                case 1: strDW = "分"; break;
                case 2: strDW = "角"; break;
                case 3: strDW = "元"; break;
                case 4: strDW = "拾"; break;
                case 5: strDW = "佰"; break;
                case 6: strDW = "仟"; break;
                case 7: strDW = "万"; break;
                case 8: strDW = "拾"; break;
                case 9: strDW = "佰"; break;
                case 10: strDW = "仟"; break;
                case 11: strDW = "亿"; break;
                case 12: strDW = "拾"; break;
                case 13: strDW = "佰"; break;
                case 14: strDW = "仟"; break;
            }
            switch (strArr[intFen - 1]) {
                case "1": strNum = "壹"; break;
                case "2": strNum = "贰"; break;
                case "3": strNum = "叁"; break;
                case "4": strNum = "肆"; break;
                case "5": strNum = "伍"; break;
                case "6": strNum = "陆"; break;
                case "7": strNum = "柒"; break;
                case "8": strNum = "捌"; break;
                case "9": strNum = "玖"; break;
                case "0": strNum = "零"; break;
            }

            strNow = strBig.split("");
            if ((i == 1) && (strArr[intFen - 1] == "0")) {
                strBig = "整";
            }
            else if ((i == 2) && (strArr[intFen - 1] == "0")) {
                if (strBig != "整")
                    strBig = "零" + strBig;
            }
            else if ((i == 3) && (strArr[intFen - 1] == "0")) {
                strBig = "元" + strBig;
            }
            else if ((i < 7) && (i > 3) && (strArr[intFen - 1] == "0") && (strNow[0] != "零") && (strNow[0] != "元")) {
                strBig = "零" + strBig;
            }
            else if ((i < 7) && (i > 3) && (strArr[intFen - 1] == "0") && (strNow[0] == "零"))
            { }
            else if ((i < 7) && (i > 3) && (strArr[intFen - 1] == "0") && (strNow[0] == "元"))
            { }
            else if ((i == 7) && (strArr[intFen - 1] == "0")) {
                strBig = "万" + strBig;
            }
            else if ((i < 11) && (i > 7) && (strArr[intFen - 1] == "0") && (strNow[0] != "零") && (strNow[0] != "万")) {
                strBig = "零" + strBig;
            }
            else if ((i < 11) && (i > 7) && (strArr[intFen - 1] == "0") && (strNow[0] == "万"))
            { }
            else if ((i < 11) && (i > 7) && (strArr[intFen - 1] == "0") && (strNow[0] == "零"))
            { }
            else if ((i < 11) && (i > 8) && (strArr[intFen - 1] != "0") && (strNow[0] == "万") && (strNow[2] == "仟")) {
                strBig = strNum + strDW + "万零" + strBig.substring(1, strBig.length);
            }
            else if (i == 11) {
                if ((strArr[intFen - 1] == "0") && (strNow[0] == "万") && (strNow[2] == "仟")) {
                    strBig = "亿" + "零" + strBig.substring(1, strBig.length);
                }
                else if ((strArr[intFen - 1] == "0") && (strNow[0] == "万") && (strNow[2] != "仟")) {
                    strBig = "亿" + strBig.substring(1, strBig.length);
                }
                else if ((strNow[0] == "万") && (strNow[2] == "仟")) {
                    strBig = strNum + strDW + "零" + strBig.substring(1, strBig.length);
                }
                else if ((strNow[0] == "万") && (strNow[2] != "仟")) {
                    strBig = strNum + strDW + strBig.substring(1, strBig.length);
                }
                else {
                    strBig = strNum + strDW + strBig;
                }
            }
            else if ((i < 15) && (i > 11) && (strArr[intFen - 1] == "0") && (strNow[0] != "零") && (strNow[0] != "亿")) {
                strBig = "零" + strBig;
            }
            else if ((i < 15) && (i > 11) && (strArr[intFen - 1] == "0") && (strNow[0] == "亿"))
            { }
            else if ((i < 15) && (i > 11) && (strArr[intFen - 1] == "0") && (strNow[0] == "零"))
            { }
            else if ((i < 15) && (i > 11) && (strArr[intFen - 1] != "0") && (strNow[0] == "零") && (strNow[1] == "亿") && (strNow[3] != "仟")) {
                strBig = strNum + strDW + strBig.substring(1, strBig.length);
            }
            else if ((i < 15) && (i > 11) && (strArr[intFen - 1] != "0") && (strNow[0] == "零") && (strNow[1] == "亿") && (strNow[3] == "仟")) {
                strBig = strNum + strDW + "亿零" + strBig.substring(2, strBig.length);
            } else {
                strBig = strNum + strDW + strBig;
            }
            strFen = strFen.substring(0, intFen - 1);
            intFen = strFen.length;
            strArr = strFen.split("");
        }
        if (strBig == "整") { strBig = "零"; }
        return strBig;
    } catch (err) {
        return "";
    }
}

原文地址:https://www.cnblogs.com/sagahu/p/2710029.html