本文转载自http://blog.csdn.net/yeah86/article/details/3456706

之前在CSDN论坛里,看有人Show了一些把中文大写转换成阿拉伯数字的程序代码,自己也用Java语言实现了程序设计,基本上能够实现十万亿以内的任何数字的转换。之前也帖出自己的实现代码。

但我个人认为,把大写转换为数字实际上是没有多少意义的。因为很少有把大写转为数字的,大多数都是把数字转换为大写。何况把大写转为数字并不是一件很容易的事情,因为汉语大写有很多种说法,比如说:101,它的汉语说法可以有好多种:

(一)、百零一

(二)、一百零一

(三)、一百又一

(四)、幺零幺

因此,要实现起来其实是很难的。而且还要防止用户输入大小写不固定,一会输入“一百零一”,一会又输入“壹佰零壹”,或者是二者的杂合体。形式千变万化,何况这一个数字就可以有这么多种,还有那么多特殊的数字呢?除非用成统一标准的输入。否则是很容易出现问题的。

但是,数字转换成大写却是很实用的,平时去银行用得比较多,只要涉及金钱的时候,基本上都要求用大写。所以,这种转换看来是符合要求,因此,我用C#代码实现了其功能,并将用户输入用“,”分隔成三个一组的形式,可以实现百万亿级别的数字转换。下面我帖出部分代码,大家指正:

其他输入验证我就不帖出来了,只把核心代码帖出来

  1. class Chinese
  2. {
  3. public string returnResult(long num)
  4. {
  5. string numStr = num.ToString();
  6. //主要理念是把数字字符串最终分隔为四个一组四个一组的,不足的不管。
  7. if (numStr.Length > 8 & numStr.Length < 16)
  8. {
  9. //定义一个数组,存储整个字条串分隔后的字符串。然后两次递归调用。
  10. //调用完全后,得到总的大写字符串。
  11. string[] firstSplit = new string[2];
  12. firstSplit[0] = numStr.Substring(0, numStr.Length - 8);
  13. firstSplit[1] = numStr.Substring(numStr.Length - 8, 8);
  14. string result1 = getString(firstSplit[0]) + "億";
  15. string result2 = getString(firstSplit[1]);
  16. return result1 + result2;
  17. }
  18. else
  19. {
  20. return getString(numStr);
  21. }
  22. }
  23. //进行一次递归调用,得到两组四位数字的大字字串
  24. public string getString(string str)
  25. {
  26. if (str.Length > 4)
  27. {
  28. string[] secondSplit = new string[2];
  29. secondSplit[0] = str.Substring(0, str.Length - 4);
  30. secondSplit[1] = str.Substring(str.Length - 4, 4);
  31. string result1 = getRe(secondSplit[0]);
  32. string result2 = getRe(secondSplit[1]);
  33. //确定是否加“万”字
  34. if (!secondSplit[0].Equals("0000"))
  35. {
  36. result1 += "萬";
  37. }
  38. return result1 + result2;
  39. }
  40. else
  41. {
  42. return getRe(str);
  43. }
  44. }
  45. int[] value = { 1000, 100, 10 };
  46. //将四位数以内的字符串返回为正确的大写称呼 比如1234 返回:一千二百三十四
  47. public string getRe(string doWith)
  48. {
  49. char[] number = doWith.ToCharArray();
  50. int length = number.Length;
  51. string re = "";
  52. for (int i = 0; i < length; i++)
  53. {
  54. switch (number[i])
  55. {
  56. case '0':
  57. if (re.EndsWith("零"))
  58. {
  59. re += "";
  60. }
  61. else
  62. {
  63. re += "零";
  64. }
  65. break;
  66. case '1':
  67. re += "壹";
  68. break;
  69. case '2':
  70. re += "贰";
  71. break;
  72. case '3':
  73. re += "叁";
  74. break;
  75. case '4':
  76. re += "肆";
  77. break;
  78. case '5':
  79. re += "伍";
  80. break;
  81. case '6':
  82. re += "陆";
  83. break;
  84. case '7':
  85. re += "柒";
  86. break;
  87. case '8':
  88. re += "捌";
  89. break;
  90. case '9':
  91. re += "玖";
  92. break;
  93. }
  94. int index = (int)Math.Pow(10, length - i - 1);
  95. if (number[i].ToString() == "0")
  96. {
  97. index = -1;
  98. }
  99. switch (index)
  100. {
  101. case 1000:
  102. re += "仟";
  103. break;
  104. case 100:
  105. re += "佰";
  106. break;
  107. case 10:
  108. re += "拾";
  109. break;
  110. }
  111. }
  112. if (re.EndsWith("零"))
  113. {
  114. re = re.Substring(0, re.Length - 1);
  115. }
  116. return re;
  117. }
  118. }

阿拉伯数字转换成大写数字相关推荐

  1. win7计算机名改成大写,处置win7系统将word中的阿拉伯数字转换成大写数字的还原方案...

    随着电脑的使用率越来越高,我们有时候可能会遇到对win7系统将word中的阿拉伯数字转换成大写数字进行设置,如果我们需要对win7系统将word中的阿拉伯数字转换成大写数字进行设置时,要怎么处理win ...

  2. C语言自学路之将小写数字完美转换成大写数字

    C语言自学路之将小写数字完美转换成大写数字 # define N 6:6位及以内的整数(小数点后不计) PS:中间两条测试数组正确性的可以忽视,我只是每敲一点都喜欢运行测试一下- #include & ...

  3. python练习题--阿拉伯数字转换成中文数字

    python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...

  4. 将(123)数字转换成大写数字(壹,贰,弎)

    此方法 将(123)数字转换成大写数字(壹,贰,弎) RMBUtils.toChineseUnit()

  5. 银行考题,将阿拉伯数字转换成大写的汉字模式

    银行考题,将阿拉伯数字转换成大写的汉字模式 例如 123456789.01  -> 壹亿贰千叁百肆十伍万陆千柒百捌十玖元零壹分 假定:  最小到"分"  最大到 " ...

  6. 《读九章算术学Python》如何用Python编程实现阿拉伯数字转换成汉字数字?

    第6章 数量转换 Python编程基础 字典 字符串操作 if-elif-else语句 递归 前面的输入和输出都是阿拉伯数字,这一章我们来看一下如何实现阿拉伯数字和汉字数字之间的相互转换. 6.1 阿 ...

  7. 小写数字转换成大写数字

    前两天看到一道题,关于小写数字转换成大写的.也就是将"1023050405"这样的数字转换为"十亿二千三百零五万零四百零五". 这个是个算法问题,其它语言也是相 ...

  8. 阿拉伯数字转换成大写的数字

    import java.math.BigInteger;/** * @author 作者 E-mail: * @version 创建时间:2016年9月18日 下午5:26:04 * 类说明 */ p ...

  9. 将阿拉伯数字转换成汉字数字(小写)

    将之前找到的代码加以完善和修改,可以支持亿级别的数字转换,有更好的可以给些建议,谢谢 public static String ToCH(int intInput) {String si = Stri ...

最新文章

  1. Leetcode上的题目
  2. java求婚代码_屌丝程序员的求婚道具--内含视频
  3. ssh登录命令(转)
  4. 建立ssh无密码登录环境
  5. ios-实现ARC与MRC混编
  6. phabricator安装配置和使用(docker安装和独立部署)
  7. 代理设计模式 实现 Retrofit 的 create
  8. 一文掌握汽车总线CAN帧报文
  9. android 橡皮擦 黑色,Android画板,橡皮擦为黑色痕迹的问题
  10. ffmpeg里转场transition
  11. C#datagridview中双缓存Dgv
  12. (三)CSS前端开发面试会问到的问题有哪些?
  13. IT30:30岁IT男未来10年规划第3篇(2009-2020)
  14. 给老师发邮件的格式参考
  15. 牵着她——表白不成功算我输(Python实现)
  16. 【笔记1】chrome网站技术分析插件:Wappalyzer
  17. c语言程序设计答案吉林大学,C语言程序设计课后习题答案吉林大学版武爱平.pdf...
  18. win10更新卡住不动_还在为游戏卡死不动的问题而烦恼?教你一招解决
  19. 平淡的感动:先挂电话的那个人……
  20. 理解电感的Isat Irms,饱和电流,额定电流

热门文章

  1. Hadoop2.2.0 HA高可用分布式集群搭建(hbase,hive,sqoop,spark)
  2. 报错的解决 sqlite3.OperationalError: unrecognized token: “630008.OF“
  3. IV XXSC-11
  4. Python调用批处理文件
  5. sublime text 3 - win10输入法输入框不跟随问题解决
  6. Android 9.0 语音识别失效
  7. Omi NTFS磁盘专家 for Mac - Mac磁盘读写工具
  8. [下载] M20PXX 系列 SPI Flash datasheet
  9. wifi密钥破解(WPA2/PSK)
  10. 为什么要将线程设置成分离状态