Js/JQuery将金额数字转换为中文万、亿结尾


JavaScript代码

function addChineseUnit (number, decimalDigit) {

    var temp1 = number.toString();
    var temp2 = '';
    if(temp1.substring(0, 1) === "-"){
        number =  Number(number.toString().substring(1));
        temp2 = '-';
    }
    decimalDigit = decimalDigit == null ? 2 : decimalDigit;

    var integer = Math.floor(number);
    var digit = getDigit(integer);
    // ['个', '十', '百', '千', '万', '十万', '百万', '千万'];
    var unit = [];
    if (digit > 3) {
        var multiple = Math.floor(digit / 8);
        if (multiple >= 1) {
            var tmp = Math.round(integer / Math.pow(10, 8 * multiple));
            unit.push(addWan(tmp, number, 8 * multiple, decimalDigit));
            for (var i = 0; i < multiple; i++) {
                unit.push('亿');
            }
            return temp2 + unit.join('');
        } else {
            return temp2 + addWan(integer, number, 0, decimalDigit);
        }
    } else {
        return temp2 + number;
    }
}

function getDigit (integer) {
    var digit = -1;
    while (integer >= 1) {
        digit++;
        integer = integer / 10;
    }
    return digit;
}

为数字加上单位:万或亿

/**
 * 为数字加上单位:万或亿
 *
 * 例如:
 * 1000.01 => 1000.01
 * 10000 => 1万
 * 99000 => 9.9万
 * 566000 => 56.6万
 * 5660000 => 566万
 * 44440000 => 4444万
 * 11111000 => 1111.1万
 * 444400000 => 4.44亿
 * 40000000,00000000,00000000 => 4000万亿亿
 * 4,00000000,00000000,00000000 => 4亿亿亿
 *
 * @param {number} number 输入数字.
 * @param {number} decimalDigit 小数点后最多位数,默认为2
 * @return {string} 加上单位后的数字
 */

function addWan (integer, number, mutiple, decimalDigit) {
    var digit = getDigit(integer);
    if (digit > 3) {
        var remainder = digit % 8;
        if (remainder >= 5) { // ‘十万’、‘百万’、‘千万’显示为‘万’
            remainder = 4;
        }
        return Math.round(number / Math.pow(10, remainder + mutiple - decimalDigit)) / Math.pow(10, decimalDigit) + '万';
    } else {
        return Math.round(number / Math.pow(10, mutiple - decimalDigit)) / Math.pow(10, decimalDigit);
    }
}

显示结果

123536.8546 保留2位 ---> 12.35万
-12315615161536.85146 保留4位 ---> -12.3156万亿
1236.8546 保留2位 ---> 1236.8546

完整Demo

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
/**
 * 为数字加上单位:万或亿
 *
 * 例如:
 * 1000.01 => 1000.01
 * 10000 => 1万
 * 99000 => 9.9万
 * 566000 => 56.6万
 * 5660000 => 566万
 * 44440000 => 4444万
 * 11111000 => 1111.1万
 * 444400000 => 4.44亿
 * 40000000,00000000,00000000 => 4000万亿亿
 * 4,00000000,00000000,00000000 => 4亿亿亿
 *
 * @param {number} number 输入数字.
 * @param {number} decimalDigit 小数点后最多位数,默认为2
 * @return {string} 加上单位后的数字
 */

function addWan (integer, number, mutiple, decimalDigit) {
    var digit = getDigit(integer);
    if (digit > 3) {
        var remainder = digit % 8;
        if (remainder >= 5) { // ‘十万’、‘百万’、‘千万’显示为‘万’
            remainder = 4;
        }
        return Math.round(number / Math.pow(10, remainder + mutiple - decimalDigit)) / Math.pow(10, decimalDigit) + '万';
    } else {
        return Math.round(number / Math.pow(10, mutiple - decimalDigit)) / Math.pow(10, decimalDigit);
    }
}

function getDigit (integer) {
    var digit = -1;
    while (integer >= 1) {
        digit++;
        integer = integer / 10;
    }
    return digit;
}

function addChineseUnit (number, decimalDigit) {

    var temp1 = number.toString();
    var temp2 = '';
    if(temp1.substring(0, 1) === "-"){
        number =  Number(number.toString().substring(1));
        temp2 = '-';
    }
    decimalDigit = decimalDigit == null ? 2 : decimalDigit;

    var integer = Math.floor(number);
    var digit = getDigit(integer);
    // ['个', '十', '百', '千', '万', '十万', '百万', '千万'];
    var unit = [];
    if (digit > 3) {
        var multiple = Math.floor(digit / 8);
        if (multiple >= 1) {
            var tmp = Math.round(integer / Math.pow(10, 8 * multiple));
            unit.push(addWan(tmp, number, 8 * multiple, decimalDigit));
            for (var i = 0; i < multiple; i++) {
                unit.push('亿');
            }
            return temp2 + unit.join('');
        } else {
            return temp2 + addWan(integer, number, 0, decimalDigit);
        }
    } else {
        return temp2 + number;
    }
}

$(function(){ 
    $("#div1").text('123536.8546 保留2位 ---> '+addChineseUnit (123536.8546,2));
    $("#div2").text('-12315615161536.85146 保留4位 ---> '+addChineseUnit(-12315615161536.85146,4));
    $("#div3").text('1236.8546 保留2位 ---> '+addChineseUnit (1236.8546,2));
});

    
</script>
</head>

<body>
    <div id="div1"></div>
    <div id="div2"></div>
    <div id="div3"></div>
</body>
</html>

声明:目的地-Destination|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Js/JQuery将金额数字转换为中文万、亿结尾


前程似锦、未来可期、寻得良人、共赴白头,祝你也祝我。