本帖最后由 terse 于 2024-4-1 08:08 编辑
处理大数
头两行加上了
修正一下亿位的处理,发现bug再修正- @echo off&setlocal enabledelayedexpansion
- set/a "零=0,一=1,二=2,三=3,四=4,五=5,六=6,七=7,八=8,九=9,十=10,百=100,千=1000,万=10000,亿=100000"
- set "str=八十二亿零十"
- set "s=!str!
- if "!s:~16!" neq "" (set len=16&set "s=!s:~16!") else set len=0
- set "s=!s!fedcba9876543210"
- set /a "len+=0x!s:~16,1!,result=content=num=0"
- set "stry="
- for /l %%i in (0,1,!len!) do for /f %%j in ("!str:~%%i,1!") do (
- if !%%j! geq 10 (
- if !%%j! gtr 1000 (
- if !%%j! gtr 10000 (
- set /a stry=result+content+num,result=content=0"
- set stry=!stry!00000000
- )else set /a "content=(content+num)*%%j,result+=content,content=0"
- ) else set /a "num+=^!num,content+=num*%%j"
- set "num=0"
- ) else if !%%j! neq 0 set num=!%%j!
- )
- set /a "result+=content+num
- if defined stry (
- set "s1=!stry!fedcba9876543210"
- set "s2=!result!fedcba9876543210"
- set /a "len=0x!s1:~16,1!-0x!s2:~16,1!"
- for /f %%i in ("!len!") do echo !str! "!stry:~,%%i!!result!"
- ) else echo;!str! !result!
- pause
复制代码
|