精华内容
下载资源
问答
  • 汉字转数字

    2017-05-18 15:11:11
    汉字转数字
  • php实现中文转数字

    2020-10-22 20:05:59
    里给大家分享的是一则使用php实现的中文转数字的代码,非常智能,也很完美,有需要的小伙伴可以参考下。
  • 独立开发,实测可用, 将阿拉伯和中文数字组合的字符串成阿拉伯数字的整型 包。例如: “八万三千20”就可以成整型 803020 。解压后,引用包。调用方法 在UnitTest.java 中有
  • Python汉字转数字

    千次阅读 2020-06-29 10:50:56
    使用栈的思想解析汉字,将汉字转为数字,支持小数

    问题描述

    输入

    十一
    

    输出

    11
    

    输入

    九万八千零七十六点五四三二一
    

    输出

    98076.54321
    




    代码

    对参考文献1中的代码进行优化,添加了小数的情况

    from decimal import *
    
    
    def chinese2digit(cn):
        '''中文转数字
    
        :param cn: 中文字符串
        :return: 数字
        >>> chinese2digit('十一')
        11
        >>> chinese2digit('九万八千零七十六点五四三二一')
        Decimal('98076.54321')
        '''
        CN_NUM = {
            '〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9,
            '零': 0, '壹': 1, '贰': 2, '叁': 3, '肆': 4, '伍': 5, '陆': 6, '柒': 7, '捌': 8, '玖': 9,
            '貮': 2, '两': 2
        }
        CN_UNIT = {
            '十': 10, '拾': 10, '百': 100, '佰': 100, '千': 1000, '仟': 1000, '万': 10000, '萬': 10000,
            '亿': 100000000, '億': 100000000, '兆': 1000000000000
        }
    
        cn = cn.split('点')
        integer = list(cn[0])  # 整数部分
        decimal = list(cn[1]) if len(cn) == 2 else []  # 小数部分
        unit = 0  # 当前单位
        parse = []  # 解析数组
        while integer:
            x = integer.pop()
            if x in CN_UNIT:
                # 当前字符是单位
                unit = CN_UNIT.get(x)
                if unit == 10000:
                    parse.append('w')  # 万位
                    unit = 1
                elif unit == 100000000:
                    parse.append('y')  # 亿位
                    unit = 1
                elif unit == 1000000000000:  # 兆位
                    parse.append('z')
                    unit = 1
                continue
            else:
                # 当前字符是数字
                dig = CN_NUM.get(x)
                if unit:
                    dig = dig * unit
                    unit = 0
                parse.append(dig)
    
        if unit == 10:  # 处理10-19的数字
            parse.append(10)
    
        result = 0
        tmp = 0
        while parse:
            x = parse.pop()
            if x == 'w':
                tmp *= 10000
                result += tmp
                tmp = 0
            elif x == 'y':
                tmp *= 100000000
                result += tmp
                tmp = 0
            elif x == 'z':
                tmp *= 1000000000000
                result += tmp
                tmp = 0
            else:
                tmp += x
        result += tmp
    
        if decimal:
            unit = 0.1
            getcontext().prec = len(decimal)  # 小数精度
            result = Decimal(float(result))
            tmp = Decimal(0)
            for x in decimal:
                dig = CN_NUM.get(x)
                tmp += Decimal(str(dig)) * Decimal(str(unit))
                unit *= 0.1
            getcontext().prec = len(result.to_eng_string()) + len(decimal)  # 完整精度
            result += tmp
        return result
    
    
    if __name__ == '__main__':
        test = [
            '九',  # 9
            '十一',  # 11
            '一百二十三',  # 123
            '一千二百零三',  # 1203
            '一万一千一百零一',  # 11101
            '十万零三千六百零九',  # 103609
            '一百二十三万四千五百六十七',  # 1234567
            '一千一百二十三万四千五百六十七',  # 11234567
            '一亿一千一百二十三万四千五百六十七',  # 111234567
            '一百零二亿五千零一万零一千零三十八',  # 10250011038
            '一千一百一十一亿一千一百二十三万四千五百六十七',  # 111111234567
            '一兆一千一百一十一亿一千一百二十三万四千五百六十七',  # 1111111234567
            '九万八千零七十六点五四三二一零七四五六',  # 98076.54321
            '九万八千零七十六点五四三二一',  # 98076.54321
        ]
    
        for i in test:
            print(chinese2digit(i))
    




    TODO

    print(chinese2digit('1万'))
    

    输出

    10000
    




    参考文献

    1. Python将汉字数字转换成阿拉伯数字的方法
    2. Python开发——利用正则表达式实现计算器算法
    展开全文
  • 主要为大家详细介绍了Java常用数字工具类,数字转汉字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 输入万亿以下汉字数,可变为相应阿拉伯数字,附易语言源码,例如:五百八十万四千六百五十五对应为5804655
  • python中汉字转数字

    千次阅读 2018-01-15 20:14:40
    #!/usr/bin/env python # -*- coding: utf-8 -*- common_used_numerals_tmp ={'零':0, '一':1, '二':2, '三':3, '四':4, '五':5, '六':6, '日':7, '八':8, '九':9, '十':10} common_used_numerals = {} ...
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    
    common_used_numerals_tmp ={'零':0, '一':1, '二':2, '三':3, '四':4, '五':5, '六':6, '日':7, '八':8, '九':9, '十':10}
    common_used_numerals = {}
    for key in common_used_numerals_tmp:
      common_used_numerals[key.decode('utf8')] = common_used_numerals_tmp[key]
    def chinese2digits(uchars_chinese):
      total = 0
      r = 1
      for i in range(len(uchars_chinese) - 1, -1, -1):
        val = common_used_numerals.get(uchars_chinese[i])
        if val >= 10 and i == 0:  #应对 十三 十四 十*之类
          if val > r:
            r = val
            total = total + val
          else:
            r = r * val
            #total =total + r * x
        elif val >= 10:
          if val > r:
            r = val
          else:
            r = r * val
        else:
          total = total + r * val
      return total
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    展开全文
  • Android中数字转中文,金额大写源码,支持口语化转换。
  • chinese_number_dict = {'一':1, '七':7, '万':10000, '三':3, '九':9,'两':2, '二':2, '五':5, '八':8, '六':6, '十':10,'三':3, '千':1000, '四':4, '百':100, '零':0,"亿":100000000} ...
    
    chinese_number_dict = {'一':1, '七':7, '万':10000, '三':3, '九':9,'两':2, '二':2, '五':5, '八':8, '六':6, '十':10,'三':3, '千':1000, '四':4, '百':100, '零':0,"亿":100000000}
    not_in_decimal = "十百千万亿点"
    def ch2num(chstr):
        if '点' not in chstr:
            return ch2round(chstr)
        splits = chstr.split("点")
        if len(splits) != 2:
            return splits
        rount = ch2round(splits[0])
        decimal = ch2decimal(splits[-1])
        if rount is not None and decimal is not None:
            return float(str(rount) + "." + str(decimal))
        else:
            return None
    
    def ch2round(chstr):
        no_op = True
        if len(chstr) >= 2:
            for i in chstr:
                if i in not_in_decimal:
                    no_op = False
        else:
            no_op = False
        if no_op:
            return ch2decimal(chstr)
    
        result = 0
        now_base = 1
        big_base = 1
        big_big_base = 1
        base_set = set()
        chstr = chstr[::-1]
        for i in chstr:
            if i not in chinese_number_dict:
                return None
            if chinese_number_dict[i] >= 10:
                if chinese_number_dict[i] > now_base:
                    now_base = chinese_number_dict[i]
                elif now_base >= chinese_number_dict["万"] and now_base < chinese_number_dict["亿"] and chinese_number_dict[i] > big_base:
                    now_base = chinese_number_dict[i] * chinese_number_dict["万"]
                    big_base = chinese_number_dict[i]
                elif now_base >= chinese_number_dict["亿"] and chinese_number_dict[i] > big_big_base:
                    now_base = chinese_number_dict[i] * chinese_number_dict["亿"]
                    big_big_base = chinese_number_dict[i]
                else:
                    return None
            else:
                if now_base in base_set and chinese_number_dict[i] != 0:
                    return None
                result = result + now_base * chinese_number_dict[i]
                base_set.add(now_base)
        if now_base not in base_set:
            result = result + now_base * 1
        return result
    
    def ch2decimal(chstr):
        result = ""
        for i in chstr:
            if i in not_in_decimal:
                return None
            if i not in chinese_number_dict:
                return None
            result = result + str(chinese_number_dict[i])
        return int(result)
    
    if __name__ == "__main__":
        print(ch2num("一万三千零二十"))
        print(ch2num("一万三千两百二十"))
        print(ch2num("两百五十三"))
        print(ch2num("三十二"))
        print(ch2num("二"))
        print(ch2num("二二三五七"))
        print(ch2num("十"))
        print(ch2num("百"))
        print(ch2num("十二点五"))
        print(ch2num("三点一四一五九二六"))
        print(ch2num("三千五百亿一千三百二十五万四千五百六十九点五八三四三九二九一"))
    
    output:
    13020
    13220
    253
    32
    2
    22357
    10
    100
    12.5
    3.1415926
    350013254569.58344
    
    展开全文
  • ---数字转换汉字----RR--------------------- ALTER FUNCTION numToChinese(@str varchar(20)) RETURNS VARCHAR(20) AS BEGIN declare @i int, @n_str varchar(1),@data varchar(20)
  • 将一段字符串中的中文数字转换为阿拉伯数字,也可将阿拉伯数字转换为中文数字
  • 改代码支持将中文数字转换为阿拉伯数字,转换的范围到999为止,并且只能转换简单整数
  • mysql oracle 阿拉伯数字转中文数字, 亲测可用.找了很长时间才找到,
  • C# 繁体转中文,中文转繁体,数字转中文(人民币),中文转数字(人民币)支持敏感词过滤,最强大最全面
  • Convert Chinese Number to Arabic Number (将中文数字转换成英文)
  • PostgreSQL 中文(简体、...--中文汉字转阿拉伯数字 CREATE OR REPLACE FUNCTION udf_hanzi2digits(input_chinese text) RETURNS bigint LANGUAGE plpgsql AS $function$ DECLARE val INT8 :=0;--结果 tmp IN...

    PostgreSQL 中文(简体、繁体)数字转阿拉伯数字

    函数代码

    
    --中文汉字转阿拉伯数字
    CREATE OR REPLACE FUNCTION udf_hanzi2digits(input_chinese text)
     RETURNS bigint
     LANGUAGE plpgsql
    AS $function$
      DECLARE
      val INT8 :=0;--结果
     tmp INT8 :=0; -- 临时值
     num_unit INTEGER :=0;--数字单位
     ldig INTEGER[] ; --数值数组
     cndig TEXT ; --汉字字符
     dig INTEGER :=0; --个位数
     x INTEGER :=0;
     v_index INTEGER :=0; --数组的下标
     chinese TEXT[] := ARRAY['零','一','二','三','四','五','六','七','八','九','十','百','千','万','亿','两','壹','贰','叁','肆','伍','陆','柒','捌','玖','貮','拾','佰','仟','萬','億','〇'];
     digit INTEGER[] :=ARRAY[0,1,2,3,4,5,6,7,8,9,10,100,1000,10000,100000000,2,1,2,3,4,5,6,7,8,9,2,10,100,1000,10000,100000000,0];
     number_type TEXT[] := ARRAY['num','num','num','num','num','num','num','num','num','num','unit','unit','unit','unit','unit','num','num','num','num','num','num','num','num','num','num','num','unit','unit','unit','unit','unit','num'];
    BEGIN
           IF chinese@> regexp_split_to_array(input_chinese,'')=false then
            raise notice '%','参数不全是中文数字!';
            RETURN NULL;
           END IF;
    
          foreach cndig in ARRAY regexp_split_to_array(reverse(input_chinese), '')  LOOP
         v_index := array_position(chinese, cndig);
           IF (number_type[v_index]) = 'unit' THEN
              num_unit := (digit[v_index]);
            IF num_unit = 10000 OR num_unit = 100000000 THEN
               ldig := array_prepend(num_unit,ldig);
               num_unit := 1;
            END IF;
            ELSE
             dig := (digit[v_index]);
              IF num_unit > 0 THEN
                dig := dig * num_unit;
                num_unit := 0;
              END IF;
             ldig := array_prepend(dig,ldig);
            END IF;
          END LOOP;
       IF num_unit = 10 THEN
        ldig := array_prepend(10,ldig);
       END IF;
        foreach x IN  ARRAY  ldig LOOP
         IF (x = 10000 OR x = 100000000) THEN
           val := val + (tmp*x);
          tmp := 0 ;
         ELSE
           tmp := tmp + x ;
         END IF;
        END LOOP;
       val := val + tmp;
    RETURN val;
    END;
    $function$;

    测试

    --1. 小写汉字数字转阿拉伯数字
    select udf_hanzi2digits('一百八十万零八十');
    --1800080
    
    --2. 大写汉字数字转阿拉伯数字
    select udf_hanzi2digits('壹佰捌拾贰');
    --182
    
    --3. 混合汉字转换
    select udf_hanzi2digits('一百八十万零壹佰捌拾贰');
    --1800182
    

     

     

     

    展开全文
  • 主要介绍了Python实现中文数字转换为阿拉伯数字的方法,涉及Python字符串遍历、转换相关操作技巧,需要的朋友可以参考下
  • 主要介绍了JavaScript实现把数字转换成中文,本文直接给出实例代码,需要的朋友可以参考下
  • 汉字数字转换成数字

    千次阅读 2019-07-19 10:16:53
    //将一个汉字转换成数字 三千四百万零三十二个<---->340 public static Integer reverNumber(String str) { //最后一个汉字“个”,要是原文没加的话,你就自己加上,str+"个",很简单 ...
  • 主要介绍了vue实现输入一位数字转汉字功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • excel 纯函数 数字转换大写 数字转换财务大写 数字转换中文 数字转换汉字,里面有详细的介绍,非常适合初学者,操作简单方便,易学易用,希望能给您带来帮助。 适合excel2000及以上版本。
  • 主要介绍了python实现将中文日期转换为数字日期,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • javascript数字转汉字中文数字

    千次阅读 2017-05-05 11:21:15
    工作中遇到js里面数字转汉字,这个是我最满意的。 /*   工具包 */ var   Utils={   /*   单位   */   units: '个十百千万@#%亿^...
  • 小说章节中文编号阿拉伯数字化工具,网络下载的txt的章节标号很多是中文的,例如"第一章",该工具可以转换成"第1章"这样的格式
  • 最近在做智能音响的服务器的时候,遇见了一个小的问题,我对音响说33元钱,第三方的服务器给我返回了一个三十三的中文,这样我服务器做解析处理的时候比较尴尬,于是自己想了写一个解析中文汉字的方法。 思路:首先...
  • 最近做解析描述时提取到金额字段后,需要将文本中的大写金额转换成数字,然而发现... * 大写金额转数字 * */ public static String ChineseConvertToNumber(String chineseAmount) { if (chineseAmount == null |.
  • 主要为大家详细介绍了java数字转汉字工具类的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 输入阿拉伯数字转换成中文数字 如:输入:52510001 输出:伍仟贰佰伍拾壹万零壹
  • 在一次面试中遇到一个有意思的小算法题:要求将阿拉伯数字转为汉字显示出来(包含单位)。当时虽然实现出来,但是代码写的有点凌乱。所以回家后,重新整理了一下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 251,899
精华内容 100,759
关键字:

汉字转数字