返回列表 发帖
回复 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  大写:壹拾万元零壹分
天的白色影子

TOP

返回列表