[toc]

数值处理相关

保留小数点后N位

/**
 * @param { number: Number } 要处理的数
 * @param { n: Number } 保留的小数点位数
*/
function afterDecimalPoint(number, n){
    if(typeof number === 'number') {
        const digit = Math.pow(10, n);
        /** 严格的四舍五入 */
        number = Math.round(number * digit)/digit;
        /** 非严格的四舍五入(具体查看 笔记 => javascript toFixed说明) */
        number = number.toFixed(2)
        return number;
    }
    console.error('请输入Number类型');
    return false;
}

将中文数字转为数字

function zhToNumber(str) {
    var zhNumber = { '零': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9 }
    var zhLevel = { '十': 10, '百': 100, '千': 1000, '万': 10000, '亿': 100000000 }

    var count = 0
    /* 亿或万前面的一段数字 */
    var tempNum = 0
    var len = str.length
    for (let i = 0; i < len; i++) {
        var current = str[i]
        if(current === '零') continue
        /* 只有亿和万前面可以包含许多级数字,所以以它们两个来分段划分数字 */
        if(current === '万' || current === '亿') {
            /* 把前面一段数字乘以对应的单位 */
            count += tempNum * zhLevel[current]
            tempNum = 0
        } else {
            var next = str[i+1]
            if (next && next !== '万' && next !== '亿') {
                tempNum +=  zhNumber[current] * zhLevel[next]
                i++
            } else {
                /* 下一位不存在或是万或亿的情况 */
                tempNum += zhNumber[current]
            }
        }
    }
    return count + temp
}
zhToNumber('四十二亿九千四百九十六万七千二百零九')
Last Updated:
Contributors: Warren