CODE: [Copy to clipboard]
@echo off
Setlocal Enabledelayedexpansion
set "file=200901.txt"
for /l %%a in (0 1 17) do (
set var=0%%a
set /a num1=0,num2=0,num3=0,num4=0,num5=0,zj1=0,zj2=0
call :lp
)
pause&goto :eof
:lp
for /f "usebackq tokens=1-7 delims=_. " %%b in ("%file%") do (
set str=%%b&set l5=%%f&set l7=%%h
call :cut0
if "!str:~-2!"=="!var:~-2!" (
set /a num1+=%%d,num2+=%%e,num3+=l5,num4+=%%g,num5+=l7,hj1=%%e+%%g,hj2=l5+l7
if not "!hj2:~0,-2!"=="" (set /a hj1+=!hj2:~0,-2!)
set hj2=0!hj2!
echo.%%b_%%c %%d %%e.%%f %%g.%%h !hj1!.!hj2:~-2!
)
)
set /a num2+=!num3:~0,-2!,num4+=!num5:~0,-2!,zj1=num2+num4,zj2=num3+num5
if not "!zj2:~0,-2!"=="" (set /a zj1+=!zj2:~0,-2!)
echo.
echo.156!var:~-2!_合计 !num1! !num2!.!num3:~-2! !num4!.!num5:~-2! !zj1!.!zj2:~-2!
echo.
goto :eof
:cut0
if "!l5:~0,1!"=="0" (set l5=!l5:~1!)
if "!l7:~0,1!"=="0" (set l7=!l7:~1!)
CODE: [Copy to clipboard]
@echo off
set aa=%1
set bb=%2
::调用浮点加法函数
call :add cc aa bb
echo %cc%
goto :eof
:add
::浮点数加法函数,头尾都可带0,支持49位整数,49位小数。
::第一个参数为接收变量名,第二、三个为相加数变量名。
@echo off&setlocal enabledelayedexpansion
if not defined %3 set cc=!%2!&goto :endok
if not defined %2 set cc=!%3!&goto :endok
set za=!%2:*.=!
set xa=!%2:.%za%=!
set zb=!%3:*.=!
set xb=!%3:.%zb%=!
if "!zb!."=="!%3!." set zb=0
if "!za!."=="!%2!." set za=0
set za=%za%0
set zb=%zb%0
set zm=0
for /l %%a in (0,9,81) do (
if "!za:~%%a,9!!zb:~%%a,9!"=="" goto :xok
set "za%%a=!za:~%%a,9!000000000"
set "zb%%a=!zb:~%%a,9!000000000"
set za%%a=1!za%%a:~0,9!
set zb%%a=1!zb%%a:~0,9!
set zm=%%a
)
:xok
set zy=0
for /l %%a in (%zm%,-9,0) do (
set/a "zz=!zy:~0,-9!+za%%a-1000000000+zb%%a-1000000000"
set zy=000000000!zz!
set zx=!zy:~-9!!zx!
)
set/a zm+=9,n=zm
for /l %%a in (1,1,%zm%) do if "!zx:~-%%a,1!"=="0" (set n=-%%a) else (goto :cok)
:cok
if "!zx:~-%zm%,%n%!" gtr "0" (set cc=.!zx:~-%zm%,%n%!) else (set cc=)
set zy=
for /l %%a in (9,9,81) do (
if "!xa!!xb!"=="" goto :end
set cc=!zy!!cc!
if defined xa (set "aa=000000000!xa:~-9!"&set xa=!xa:~0,-9!) else (set aa=000000000)
if defined xb (set "bb=000000000!xb:~-9!"&set xb=!xb:~0,-9!) else (set bb=000000000)
set/a zz=!zz:~0,-9!+1!bb:~-9!-1000000000+1!aa:~-9!-1000000000
set zy=000000000!zz!
set zy=!zy:~-9!
)
:end
set cc=%zz%%cc%
if "%cc%"=="0" goto :endok
if "%cc:~0,2%"=="0." goto :endok
for /l %%a in (0,1,36) do if not "!cc:~%%a,1!"=="0" (set cc=!cc:~%%a!&goto :endok)
:endok
endlocal&set %1=%cc%&goto :eof
[