人民币金额小写转大写

简介:

 

 
  1. @echo off  
  2. setlocal EnableDelayedExpansion  
  3.  
  4. set tbl1=零壹贰叁肆伍陆柒捌玖  
  5. set tbl2=分角元拾佰仟万拾佰仟亿拾佰仟  
  6.  
  7. :test_  
  8. setlocal  
  9. set /p num=请输入金额(小于一万亿元):  
  10.  
  11. for /f "tokens=1,2 delims=." %%f in ("%num%") do (  
  12.     set num2=%%g00  
  13.     set num=%%f!num2:~0,2!  
  14. )  
  15.  
  16. :loop  
  17. call set rmb=%%tbl1:~%num:~-1,1%,1%%%%tbl2:~%bit%,1%%%rmb%  
  18. set /a bit+=1  
  19. set num=%num:~0,-1%  
  20. if not "%num%"=="" goto loop  
  21.  
  22. set rmb=%rmb:零拾=零%  
  23. set rmb=%rmb:零佰=零%  
  24. set rmb=%rmb:零仟=零%  
  25. set rmb=%rmb:零零=零%  
  26. set rmb=%rmb:零零=零%  
  27.  
  28. set rmb=%rmb:零元=元零%  
  29. set rmb=%rmb:零万=万零%  
  30. set rmb=%rmb:零亿=亿零%  
  31. set rmb=%rmb:零零=零%  
  32.  
  33. set rmb=%rmb:零分=零%  
  34. set rmb=%rmb:零角=零%  
  35. set rmb=%rmb:角零=角%  
  36. set rmb=%rmb:零零=整%  
  37.  
  38. echo 人民币%rmb%  
  39.  
  40. endlocal  
  41. goto test_  
  42.  
  43.  
  44.  
  45. :: 数字金额转大写  
  46. ::code by youxi01@cn-dos.net  
  47. ::date 2006-1-1(Happy new year!best wishes to everyone!)  
  48. ::出处:http://www.cn-dos.net/forum/viewthread.php?tid=26230 
  49. @echo off  
  50. setlocal enabledelayedexpansion  
  51. set /a a=0,b=0,c=0 
  52.  
  53. ::================================  
  54. ::设置单位名称;  
  55. SET NAME0=仟  
  56. SET NAME1=佰  
  57. SET NAME2=拾  
  58. SET NAME3=  
  59. ::================================  
  60.  
  61. ::=============================================  
  62. ::设置数字对应的大写中文汉字  
  63. for %%i in (零 壹 贰 叁 肆 伍 陆 柒 捌 玖) do (  
  64.      set BIG!a!=%%i  
  65.      set /a a+=1)  
  66. ::=============================================  
  67.  
  68. ::=======================================================================  
  69. ::在以下“函数”的处理过程中,要用到"#"对数字进行对齐(都成四位),以便截取;  
  70. ::这里设置凡是出现"#"的地方都设置为空。  
  71. set BIG#=  
  72. ::=======================================================================  
  73.  
  74. set EN=  
  75.  
  76. ::====================================================  
  77. ::这里对输入的数字进行处理,分别取出整数部分和小数部分;  
  78.  
  79. set /p EN=请输入金钱数(1000亿以内):  
  80. for /f "tokens=1,2* delims=." %%i in ("%EN%") do (  
  81.       set "round=%%i"  
  82.       set "dec=%%j00" 2>nul)  
  83. ::=====================================================  
  84. set /a round=%round:,=%  
  85. set dec=%dec:~0,2%  
  86.  
  87. :test  
  88.    set /a b+=1  
  89.    ::=============================================  
  90.    ::每四位数字为一组,对原来的数据进行截取;  
  91.    if %round% gtr 9999 (  
  92.       set num!b!=!round:~-4!  
  93.       set round=!round:~0,-4!  
  94.       goto :test) else set num!b!=!round!  
  95.    ::==============================================  
  96.  
  97. ::=====================================================  
  98. ::分别对1、2、3段数据进行处理;分别赋予单位:元、万、亿  
  99. ::同时,分别将返回的数据传给str1,str2,str3(利用%3来控制)。  
  100. call :test1 %num1% 元 1  
  101. call :test1 %num2% 万 2  
  102. call :test1 %num3% 亿 3  
  103. ::======================================================  
  104.  
  105. ::====================================================================  
  106. ::去掉数字大写里多余的"零"。比如,1002,处理后读出来为:"壹千零贰元整"  
  107. ::符合我们中国人一般的读数方法;同时将结果分别传入str1,str2,str3(%2控制)。  
  108. call :test2 %str1% 1  
  109. call :test2 %str2% 2  
  110. call :test2 %str3% 3  
  111. ::=====================================================================  
  112.  
  113. ::==============================================================  
  114. ::防止类似2,0000,1002.00形式出现错误(错误读为:2亿万1千零2元整)  
  115. if "!str2!"=="零万" set str2=零  
  116. ::===============================================================  
  117.  
  118. set str=%str3%%str2%%str1%  
  119. set str=%str:零元=元%  
  120. set str=%str:零万=万%  
  121. set str=%str:零亿=亿%  
  122.  
  123. ::防止整数部分为0;  
  124. if "%str%"=="元" set str=零元  
  125.  
  126. ::对小数部分数字进行处理;  
  127. if "%dec%"=="00" (set dec=整) else (  
  128.     set /a dec1=!dec:~0,1!  
  129.     set /a dec2=!dec:~1,1!  
  130.     if !dec1! EQU 0 (set dec1=零) else call set dec1=%%BIG!dec1!%%角  
  131.     if !dec2! EQU 0 (set dec2=) else call set dec2=%%BIG!dec2!%%分  
  132.     set dec=!dec1!!dec2!  
  133. )  
  134. echo.  
  135. echo ========================  
  136. echo 你输入的金钱数目大写为:  
  137. echo.  
  138. echo %str:零零=零%%dec%  
  139. echo ========================  
  140. pause>nul  
  141.  
  142. :test1  
  143.     if not "%1"=="" (  
  144.         set temp=####%1  
  145.         set temp=!temp:~-4!  
  146.         for /l %%i in (0 1 3) do (  
  147.                set tmp%%i=!temp:~%%i,1!  
  148.                if defined tmp%%i (  
  149.                   if !tmp%%i! GTR 0 (call set str%3=!str%3!%%BIG!tmp%%i!%%!NAME%%i!) else (  
  150.                          call set str%3=!str%3!%%BIG!tmp%%i!%%)))  
  151.        set str%3=!str%3!%2  
  152.        ) else set str%3=  
  153.      goto :eof  
  154.  
  155. :test2  
  156.      set tmp=%1  
  157.      set tmp=%tmp:零零=零%  
  158.      set str%2=%tmp:零零=零%  
  159.      goto :eof 

 本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/413673,如需转载请自行联系原作者


相关文章
|
5月前
数字转大写人民币
数字转大写人民币
关于Java转换金额数字为大写金额
关于Java转换金额数字为大写金额 目前只写到万亿
|
11月前
|
Python
Python 任意长度的人民币小写金额转大写的简短代码
Python 任意长度的人民币小写金额转大写的简短代码
255 0
|
C#
c#金额转换成中文大写金额
原文:c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// /// 金额转换成中文大写金额 /// /// eg:10.
1508 0
【Util】金额数字转中文大写
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
897 0