回复 12# netbenton
制作了一段测试代码,使用了自己生成的测试数据集,经过比对,正确率非常高 | @echo off&setlocal enabledelayedexpansion | | set capital=零壹贰叁肆伍陆柒捌玖 | | set unit=仟佰拾万仟佰拾亿仟佰拾万仟佰拾元角分 | | | | :测试 | | for /f "tokens=1,2 delims=¥ " %%y in ('findstr "^¥" %~sf0') do ( | | call :转换 %%y | | echo. 小写:%%y 大写:!返回! >> %0.log | | if not "人民币!返回!"=="%%z" ( | | echo %%y 转换异常 返回:!返回! 参考:%%z | | echo %%y 转换异常 返回:!返回! 参考:%%z>> %0.log | | ) | | ) | | pause>nul | | goto :eof | | | | :转换 | | setlocal enabledelayedexpansion | | set n=0&set en= | | set num=%1 | | set int=%num:.=&set dec=% | | set dec=!dec!00 | | set num=!int!!dec:~0,2! | | if not "%int:~16%$" == "$" echo 靠!你太高估我的能力啦!&pause>nul&goto :eof | | for /l %%i in (-1,-1,-18) do ( | | for /f %%a in ("!num:~%%i,1!") do ( | | set en=!capital:~%%a,1!!unit:~%%i,1!!en! | | ) | | if "!num:~%%i!" equ "!num!" goto :ok | | ) | | :ok | | set en=@!en:零角零分=整! | | for %%i in (拾,佰,仟,角,零,零) do set en=!en:零%%i=零! | | for %%i in (亿,万,元) do set en=!en:零%%i=%%i! | | set en=!en:零分=!&set en=!en:亿万=亿!&set en=!en:@元=@!&set en=!en:@零=@! | | endlocal & set 返回=%en:@=% | | goto :eof | | | | :: 人民币金额大小写转换测试集 | | ¥0 人民币零元整 | | ¥1 人民币壹元整 | | ¥2 人民币贰元整 | | ¥3 人民币叁元整 | | ¥4 人民币肆元整 | | ¥5 人民币伍元整 | | ¥6 人民币陆元整 | | ¥7 人民币柒元整 | | ¥8 人民币捌元整 | | ¥9 人民币玖元整 | | ¥10 人民币壹拾元整 | | ¥100 人民币壹佰元整 | | ¥1000 人民币壹仟元整 | | ¥10000 人民币壹万元整 | | ¥100000 人民币壹拾万元整 | | ¥1000000 人民币壹佰万元整 | | ¥10000000 人民币壹仟万元整 | | ¥100000000 人民币壹亿元整 | | ¥1000000000 人民币壹拾亿元整 | | ¥10000000000 人民币壹佰亿元整 | | ¥100000000000 人民币壹仟亿元整 | | ¥1000000000000 人民币壹万亿元整 | | ¥11 人民币壹拾壹元整 | | ¥101 人民币壹佰零壹元整 | | ¥111 人民币壹佰壹拾壹元整 | | ¥1001 人民币壹仟零壹元整 | | ¥1010 人民币壹仟零壹拾元整 | | ¥1011 人民币壹仟零壹拾壹元整 | | ¥1100 人民币壹仟壹佰元整 | | ¥1101 人民币壹仟壹佰零壹元整 | | ¥1111 人民币壹仟壹佰壹拾壹元整 | | ¥10001 人民币壹万零壹元整 | | ¥10010 人民币壹万零壹拾元整 | | ¥10100 人民币壹万零壹佰元整 | | ¥11000 人民币壹万壹仟元整 | | ¥11100 人民币壹万壹仟壹佰元整 | | ¥11110 人民币壹万壹仟壹佰壹拾元整 | | ¥11111 人民币壹万壹仟壹佰壹拾壹元整 | | ¥100001 人民币壹拾万零壹元整 | | ¥100010 人民币壹拾万零壹拾元整 | | ¥100100 人民币壹拾万零壹佰元整 | | ¥101000 人民币壹拾万零壹仟元整 | | ¥110000 人民币壹拾壹万元整 | | ¥110001 人民币壹拾壹万零壹元整 | | ¥110010 人民币壹拾壹万零壹拾元整 | | ¥110100 人民币壹拾壹万零壹佰元整 | | ¥111000 人民币壹拾壹万壹仟元整 | | ¥100000001 人民币壹亿零壹元整 | | ¥1000000001 人民币壹拾亿零壹元整 | | ¥1000000010 人民币壹拾亿零壹拾元整 | | ¥1000001000 人民币壹拾亿零壹仟元整 | | ¥1000010000 人民币壹拾亿零壹万元整 | | ¥1000100000 人民币壹拾亿零壹拾万元整 | | ¥1010000000 人民币壹拾亿零壹仟万元整 | | ¥0.0 人民币零元整 | | ¥0.1 人民币壹角 | | ¥0.01 人民币壹分 | | ¥0.10 人民币壹角 | | ¥1.1 人民币壹元壹角 | | ¥10.1 人民币壹拾元零壹角 | | ¥11.1 人民币壹拾壹元壹角 | | ¥10.01 人民币壹拾元零壹分 | | ¥11.01 人民币壹拾壹元零壹分 | | ¥100.1 人民币壹佰元零壹角 | | ¥100.01 人民币壹佰元零壹分 | | ¥1000.1 人民币壹仟元零壹角 | | ¥1000.01 人民币壹仟元零壹分 | | ¥10000.1 人民币壹万元零壹角 | | ¥10000.01 人民币壹万元零壹分 | | ¥100000.1 人民币壹拾万元零壹角 | | ¥100000.01 人民币壹拾万元零壹分 | | ¥.1 人民币壹角 | | ¥.01 人民币壹分 COPY |
小写:0 大写:整
0 转换异常 返回:整 参考:人民币零元整
小写:1 大写:壹元整
小写:2 大写:贰元整
小写:3 大写:叁元整
小写:4 大写:肆元整
小写:5 大写:伍元整
小写:6 大写:陆元整
小写:7 大写:柒元整
小写:8 大写:捌元整
小写:9 大写:玖元整
小写:10 大写:壹拾元整
小写:100 大写:壹佰元整
小写:1000 大写:壹仟元整
小写:10000 大写:壹万元整
小写:100000 大写:壹拾万元整
小写:1000000 大写:壹佰万元整
小写:10000000 大写:壹仟万元整
小写:100000000 大写:壹亿元整
小写:1000000000 大写:壹拾亿元整
小写:10000000000 大写:壹佰亿元整
小写:100000000000 大写:壹仟亿元整
小写:1000000000000 大写:壹万亿元整
小写:11 大写:壹拾壹元整
小写:101 大写:壹佰零壹元整
小写:111 大写:壹佰壹拾壹元整
小写:1001 大写:壹仟零壹元整
小写:1010 大写:壹仟零壹拾元整
小写:1011 大写:壹仟零壹拾壹元整
小写:1100 大写:壹仟壹佰元整
小写:1101 大写:壹仟壹佰零壹元整
小写:1111 大写:壹仟壹佰壹拾壹元整
小写:10001 大写:壹万零壹元整
小写:10010 大写:壹万零壹拾元整
小写:10100 大写:壹万零壹佰元整
小写:11000 大写:壹万壹仟元整
小写:11100 大写:壹万壹仟壹佰元整
小写:11110 大写:壹万壹仟壹佰壹拾元整
小写:11111 大写:壹万壹仟壹佰壹拾壹元整
小写:100001 大写:壹拾万零壹元整
小写:100010 大写:壹拾万零壹拾元整
小写:100100 大写:壹拾万零壹佰元整
小写:101000 大写:壹拾万壹仟元整
101000 转换异常 返回:壹拾万壹仟元整 参考:人民币壹拾万零壹仟元整
小写:110000 大写:壹拾壹万元整
小写:110001 大写:壹拾壹万零壹元整
小写:110010 大写:壹拾壹万零壹拾元整
小写:110100 大写:壹拾壹万零壹佰元整
小写:111000 大写:壹拾壹万壹仟元整
小写:100000001 大写:壹亿零壹元整
小写:1000000001 大写:壹拾亿零壹元整
小写:1000000010 大写:壹拾亿零壹拾元整
小写:1000001000 大写:壹拾亿壹仟元整
1000001000 转换异常 返回:壹拾亿壹仟元整 参考:人民币壹拾亿零壹仟元整
小写:1000010000 大写:壹拾亿零壹万元整
小写:1000100000 大写:壹拾亿零壹拾万元整
小写:1010000000 大写:壹拾亿壹仟万元整
1010000000 转换异常 返回:壹拾亿壹仟万元整 参考:人民币壹拾亿零壹仟万元整
小写:0.0 大写:整
0.0 转换异常 返回:整 参考:人民币零元整
小写:0.1 大写:壹角
小写:0.01 大写:壹分
小写:0.10 大写:壹角
小写:1.1 大写:壹元壹角
小写:10.1 大写:壹拾元壹角
10.1 转换异常 返回:壹拾元壹角 参考:人民币壹拾元零壹角
小写:11.1 大写:壹拾壹元壹角
小写:10.01 大写:壹拾元零壹分
小写:11.01 大写:壹拾壹元零壹分
小写:100.1 大写:壹佰元壹角
100.1 转换异常 返回:壹佰元壹角 参考:人民币壹佰元零壹角
小写:100.01 大写:壹佰元零壹分
小写:1000.1 大写:壹仟元壹角
1000.1 转换异常 返回:壹仟元壹角 参考:人民币壹仟元零壹角
小写:1000.01 大写:壹仟元零壹分
小写:10000.1 大写:壹万元壹角
10000.1 转换异常 返回:壹万元壹角 参考:人民币壹万元零壹角
小写:10000.01 大写:壹万元零壹分
小写:100000.1 大写:壹拾万元壹角
100000.1 转换异常 返回:壹拾万元壹角 参考:人民币壹拾万元零壹角
小写:100000.01 大写:壹拾万元零壹分 |