本帖最后由 qixiaobin0715 于 2022-8-11 09:15 编辑
按照idwma在其它帖子中的思路进行分段拼接,可以突破2147483647的限制,适合小于等于“九千九百九十九亿九千九百九十九万九千九百九十九”的值,再大有点复杂,未加考虑,处理一般情况就足够了:- @echo off
- setlocal enabledelayedexpansion
- set str=九千九百九十九亿九千九百九十九万九千九百九十九
- set str=!str:零=!
- set str=!str:亿=亿 !
- set str=!str:万=万 !
- set _十=10
- for %%i in (一 二 三 四 五 六 七 八 九) do (
- set /a x+=1
- set /a _%%i=!x!
- set y=1
- for %%j in (十 百 千) do (
- set /a y*=10
- set /a _%%i%%j=!x!*!y!
- )
- )
- for %%i in (!str!) do (
- set Part=%%i
- if !Part:~-1!==亿 (
- set Part1=!Part:~,-1!
- ) else if !Part:~-1!==万 (
- set Part2=!Part:~,-1!
- ) else (
- set Part3=%%i
- )
- )
- for /l %%i in (1,1,3) do (
- if defined Part%%i (
- set Part%%i=!Part%%i:千=千 !
- set Part%%i=!Part%%i:百=百 !
- set Part%%i=!Part%%i:十=十 !
- for %%j in (!Part%%i!) do set /a m%%i+=_%%j
- )
- set /a m%%i+=10000
- set m%%i=!m%%i:~1!
- )
- for /f "tokens=* delims=0" %%i in ("!m1!!m2!!m3!") do echo,%%i
- pause
复制代码 保存为ANSI编码。
代码是按照一般思路写的,考虑的还不算成熟,应当还有更简洁的方法。 |