zoukankan      html  css  js  c++  java
  • 数字怎么转中文汉字

    /**
     * 输入需要转化的数字
     * @param num 传入数字
     *  @returns {String}
     */
    export function toChineseNum(num: number): string {
        if (typeof num !== 'number') {
            return '';
        }
        if (num === 0) {
            return '零';
        }
        const numberCharacter = [ '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' ];
        const textCharacter = [ '', '十', '百', '千' ];
        const wordCharacter = [ '', '万', '亿' ];
        /**
         * 输入数组,返回按照位数分割的数组
         * @param number 传入的数字
         * @param range 按照此位数将数字分割
         * @returns {Array} 返回用逗号分隔的数组
         */
        const splitStr = (number: number, range = 4) => {
            let str = number.toString();
    
            const [ left ] = str.split('.');
    
            const strArr = left.split('').reverse();
    
            let result = [];
            for (let i = 0; i < strArr.length; i += range) {
                result.push(
                    strArr
                        .slice(i, i + range)
                        .reverse()
                        .join('')
                );
            }
            return result.reverse();
        };
    
        /**
         * 输入一个四位数的数字,返回汉字表示
         * @param item
         * @returns {string}
         */
        const getChineseItem = (item: string) => {
            let temp = item
                .toString()
                .split('')
                .reverse()
                .map((value: any, index: number) => {
                    // 如果数字是0, 后面的两次就没有必要加了,例如102中的0, 就不需要翻译成为【零十】
                    return numberCharacter[value] + (Number(value) === 0 ? '' : textCharacter[index]);
                })
                .reverse();
    
            // 多个重复的零只保留一个
            temp = temp.reduce((total: any[], current: string) => {
                if (total[total.length - 1] === '零' && current === '零') {
                    return total;
                }
                total.push(current);
                return total;
            }, []);
    
            // 针对12,将结果由[一十二]修正为[十二]
            if (temp.length === 2) {
                temp[0] = temp[0].replace(/一十/, '十');
            }
    
            // 结尾的零要忽略,针对10,将结果由[十零]修正为[十]
            if (temp[temp.length - 1] === '零') {
                temp.pop();
            }
    
            return temp.join('');
        };
    
        let splitArr = splitStr(num).reverse();
        return splitArr
            .map(v => getChineseItem(v))
            .map((v, index) => v + wordCharacter[index])
            .reverse()
            .join('');
    }
    

      

  • 相关阅读:
    EasyUI中页面必须刷新才显示tree组件最新数据的BUG解决方案
    tp2.2.2新特点
    easyui添加自定义验证规则
    TP第一天路由解析
    负载均衡和冗余技术
    smarty缓存控制
    smarty中section遍历数组
    鬼谷子绝学
    Python的Django框架中的URL配置与松耦合
    Python的Django框架中的URL配置与松耦合
  • 原文地址:https://www.cnblogs.com/Ewarm/p/13744004.html
Copyright © 2011-2022 走看看