[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
@echo off&setlocal enabledelayedexpansion
set a=%1
set b=%2
echo %time%
call :sub c a b
echo %time%

echo %c%
goto :eof

:::::::::::::::::::::::::::::::
::浮点减法函数
:sub <接收变量> <被减数变量> <减数变量>
::
::
::支持49位整数,49小数
::自动丢弃首尾无效0
::别看代码那么长,速度可不慢哦
:::::::::::::::::::::::::::::::
@echo off&setlocal enabledelayedexpansion
set cc=0
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
::补0对齐
for /l %%a in (0,9,81) do (
if "!xa!!xb!"=="" set n=%%a&goto :bu0
if defined xa (set ya=!xa:~-9!!ya!&set xa=!xa:~0,-9!) else (set ya=000000000!ya!)
if defined xb (set yb=!xb:~-9!!yb!&set xb=!xb:~0,-9!) else (set yb=000000000!yb!)
)
:bu0
set ya=0000000000%ya%
set yb=0000000000%yb%
set xa=!ya:~-%n%!
set xb=!yb:~-%n%!
if "%xa%%za%" gtr "%xb%%zb%" (
        set zz=!za!&set xx=!xa!&set fh=
) else (
        set zz=!zb!&set xx=!xb!&set zb=!za!&set xb=!xa!&set fh=-
)

::预处理完成

for /l %%a in (0,9,81) do (
        if "!zz:~%%a,9!!zb:~%%a,9!"=="" goto :xok
        set "zz%%a=!zz:~%%a,9!000000000"
        set "zb%%a=!zb:~%%a,9!000000000"
        set zz%%a=1!zz%%a:~0,9!
        set zb%%a=1!zb%%a:~0,9!
        set zm=%%a
)
:xok
set jw=0
for /l %%a in (%zm%,-9,0) do (
        set/a "zz=jw+zz%%a-zb%%a"
        if !zz! lss 0 (set/a zz=1000000000+zz&set jw=-1) else (set jw=0)
        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 "!xx!!xb!"=="" goto :end
        set cc=!zy!!cc!
if defined xx (set "aa=000000000!xx:~-9!"&set xx=!xx:~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=jw+1!aa:~-9!-1!bb:~-9!
        if !zz! lss 0 (set/a zz=1000000000+zz&set jw=-1) else (set jw=0)
        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=%fh%%cc%&goto :eof

TOP

返回列表