汉字用零一二三四五六七八九作为基本计数,与阿拉伯数字靠数字偏移位置不一样。
中文数字是 “数字+权位”的方式组成数字,比如百,千,万。
中文数字每个数字后都会跟上一个权位,权位就是数字的量值,相当于阿拉伯数字的数位
中文计数以万为小节,万以下没有节权,万以上是亿为节权。
中文还有一个特点是多变的零,大概总结为三个规则:

  1. 以10000为小节,小节的结尾即使是0,也不使用“零”
  2. 小节内两个非0数字之间要使用“零”
  3. 当小节的千位是0时,若小节的前一小节无其他数字,则不用零,否则就要用“零”

首先,阿拉伯数字转中文数字

public class toChineseNumUtill {public  static  String numberToChinese(int num){if(num == 0){return "零";}int weigth = 0;//节权位String chinese="";String chinese_section = "";boolean setZero =false;//下一小节是否需要零,第一次没有上一小节所以为falsewhile (num >0){int section = num%10000;//得到最后面的小节if(setZero){//判断上一小节的千位是否为零,是就设置零chinese  = TooltoCh(0)+chinese;}chinese_section = sectionTrans(section);if(section != 0){//判断是都加节权位chinese_section = chinese_section +getWeight(weigth);}chinese = chinese_section+chinese;chinese_section = "";setZero = (section<1000)&&(section>0);num = num/10000;weigth++;}if((chinese.length()==2||(chinese.length() == 3))&&chinese.contains("一十")){chinese =  chinese.substring(1,chinese.length());}return chinese;}public  static  String sectionTrans(int section){StringBuilder section_chinese = new StringBuilder();int pos = 0;//小节内部权位的计数器boolean zero = true;//小节内部的置零判断,每一个小节只能有一个零。while (section >0){int v = section%10;//得到最后一个数if(v ==0 ){if(!zero){zero = true;//需要补零的操作,确保对连续多个零只是输出一个 section_chinese.insert(0,TooltoCh(0));}}else {zero = false;//有非零数字就把置零打开section_chinese.insert(0,getPos(pos));section_chinese.insert(0,TooltoCh(v));}pos++;section = section/10;}return section_chinese.toString();}public  static String TooltoCh(int num){switch (num){case 0:return "零";case 1:return "一";case 2:return "二";case 3:return "三";case 4:return "四";case 5:return "五";case 6:return "六";case 7:return "七";case 8:return "八";case 9:return "九";}return "erro";}public  static String getPos(int pos){switch (pos){case 1:return "十";case 2:return "百";case 3:return "千";}return "";}public  static  String getWeight(int weight){switch (weight){case 1:return "万";case 2:return "亿";}return "";}}

这段代码我只到了亿


中文转阿拉伯数字

public class ChineseChangeToNumber {  public int ChineseToNumber(String str){  String str1 = new String();  String str2 = new String();  String str3 = new String();  int k = 0;  boolean dealflag = true;  for(int i=0;i<str.length();i++){//先把字符串中的“零”除去  if('零' == (str.charAt(i))){  str = str.substring(0, i) + str.substring(i+1);  }  }  String chineseNum = str;  for(int i=0;i<chineseNum.length();i++){  if(chineseNum.charAt(i) == '亿'){  str1 = chineseNum.substring(0,i);//截取亿前面的数字,逐个对照表格,然后转换  k = i+1;  dealflag = false;//已经处理  }  if(chineseNum.charAt(i) == '万'){  str2 = chineseNum.substring(k,i);  str3 = str.substring(i+1);  dealflag = false;//已经处理  }  }  if(dealflag){//如果没有处理  str3 =  chineseNum;  }  int result = sectionChinese(str1) * 100000000 +  sectionChinese(str2) * 10000 + sectionChinese(str3);  return result;  }  public int sectionChinese(String str){  int value = 0;  int sectionNum = 0;  for(int i=0;i<str.length();i++){  int v = (int) Tool.intList.get(str.charAt(i));  if( v == 10 || v == 100 || v == 1000 ){//如果数值是权位则相乘  sectionNum = v * sectionNum;  value = value + sectionNum;  }else if(i == str.length()-1){  value = value + v;  }else{  sectionNum = v;  }  }  return value;  }
}  

工具类:

public class Tool {  //数字位  public static String[] chnNumChar = {"零","一","二","三","四","五","六","七","八","九"};  public static char[] chnNumChinese = {'零','一','二','三','四','五','六','七','八','九'};  //节权位  public static String[] chnUnitSection = {"","万","亿","万亿"};    //权位  public static String[] chnUnitChar = {"","十","百","千"};  public static HashMap intList = new HashMap();  static{  for(int i=0;i<chnNumChar.length;i++){  intList.put(chnNumChinese[i], i);  }  intList.put('十',10);  intList.put('百',100);  intList.put('千', 1000);  }  }  

本篇来源:
http://blog.csdn.net/jjfly999/article/details/51052492

阿拉伯数字与中文数字的相互转换相关推荐

  1. php 数字转中文函数 1转一,一个阿拉伯数字转中文数字的函数-PHP教程,PHP函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下 如果要用于金额的转换,对小数部分的处理要做一下修改 fun ...

  2. 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num: class Num(object): d ...

  3. 大写汉字转阿拉伯数字c语言,阿拉伯数字转中文数字方法详解(C++实现)

    阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法. 中文计数有一个特点,就是"零"的使用变化多端.阿拉伯数字中数字的 ...

  4. 一个阿拉伯数字转中文数字的函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改 < ...

  5. js阿拉伯数字转中文数字

    //阿拉伯数字转中文数字function noToChinese(num) {if (!/^\d*(\.\d*)?$/.test(num)) {alert("Number is wrong! ...

  6. python数字转中文_阿拉伯数字转换为中文数字的python实现

    #!/usr/bin/python # -*- coding: utf-8 -*- ''' 脚本功能:阿拉伯数字与中文数字转换 输入参数:阿拉伯数字,不带符号 初次编写日期:2018-07-24 说明 ...

  7. python输出中文加数字_Python实现阿拉伯数字加上中文数字

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num : class Num(object): ...

  8. JavaScript实现阿拉伯数字转中文数字

    JavaScript实现阿拉伯数字转中文数字 项目场景: 解决方案 项目场景: 项目相关背景: 阿拉伯数字转中文数字,例如123,转为一百二十三 解决方案 function intToChinese ...

  9. 将阿拉伯数字转换为中文数字: 123 -> 一二三

    //将阿拉伯数字转换为中文数字: 123 -> 一二三String getCNNum(int srcNum) {/*** 汉字*/String[] CN_CHARS = new String[] ...

最新文章

  1. Verilog语言设计增加延时的正确方法
  2. RabbitMQ面试题及答案
  3. 支持的sql语法_PostgreSQL 12 新特性解读之一|支持 SQL/JSON path
  4. golang错误处理(实验楼)
  5. TC的文件拷贝/移动
  6. 基于PHP的Google Voice 短信API
  7. 城市天际线 android,都市天际线安卓手机版
  8. 王思聪被限制高消费后,官方终于回应:已有解决方案
  9. 蓝桥杯 基础练习 Sine之舞
  10. python能爬取什么_5行代码就能写个爬虫,python真是太方便了!
  11. bzoj 1072: [SCOI2007]排列perm
  12. win10无法调节屏幕亮度
  13. ASEMI代理ADM202EARNZ-REEL原装ADI车规级ADM202EARNZ-REEL
  14. [转]程序员生涯之我见 找到自己的兴趣所在
  15. HTML+CSS 简单的顶部导航栏菜单制作
  16. 电磁炉全国产化电子元件推荐方案
  17. matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf
  18. Python打包exe程序(pyinstaller)以及打包文件太大的解决方法
  19. Wireless Power Tranmissions
  20. CP1202官方串口驱动

热门文章

  1. echarts图表x,y轴的设置
  2. 数学分析里面的蕴含(⇒)到底是什么意思
  3. 中国彩妆行业营销现状分析与投资机会研究报告2022版
  4. 使用_findfirst和_findnext遍历目录
  5. 数据库实验三 嵌套查询和视图操作
  6. Linux:删除重复文件工具fdupes
  7. tup,list,dict,set的创建
  8. Python网络爬虫数据采集实战(八):Scrapy框架爬取QQ音乐存入MongoDB
  9. JS引入方式有哪些?
  10. 山威SDUWH高性能计算课程HPL HPCC软件快速安装脚本