[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我贴一个较高效的浮点加法函数
  1. @echo off
  2. set aa=%time%
  3. for /l %%a in (1,1,1000) do call :_ADD 123456722222222222222890.3212222222222222222222222 1222222222222222222.789233333333333333333333333
  4. set/p =计算1000次,用时:<NUL&CALL
  5. goto :eof
  6. ::前面为演示用
  7. :::::::::::::::::::::::::::::::::::::
  8. ::浮点加法 call _ADD  <被加数> <加数> [返回变量]
  9. :_ADD [var]   //made by netbenton on 2009.10.09
  10. ::
  11. ::分别支持十进制的64位整数和小数,一次计算仅用0.01秒
  12. :::::::::::::::::::::::::::::::::::::
  13. (setlocal enabledelayedexpansion
  14. set L=&for /l %%a in (1,1,8) do set L=!L!00000000
  15. for /f "tokens=1-3 delims=." %%a in ("!L!%1.!L!") do set at=%%a&set aw=%%b%%c
  16. for /f "tokens=1-3 delims=." %%a in ("!L!%2.!L!") do set bt=%%a&set bw=%%b%%c
  17. set a=!at:~-64!!aw:~,64!
  18. set b=!bt:~-64!!bw:~,64!
  19. set e=
  20. set v=200000000
  21. for /l %%a in (8,8,128)do set/a v=1!b:~-%%a,8!+1!a:~-%%a,8!+!v:~-9,-8!-2&set e=!v:~-8!!e!
  22. set e=!e:0= !
  23. for /f "tokens=*" %%a in ("!e:~,-64!.!e:~64!") do set e=%%~nxa
  24. for %%a in ("!e: =0!") do endlocal&(if %3.==. (echo %%~a) else set %3=%%~a)
  25. exit/b)
  26. ::计算时差函数
  27. :etime [return]  // By plp626 On 09-7-20
  28. setlocal enabledelayedexpansion&set be=%~1;%~2&set be=!be::=;1!&set n=
  29. for %%a in (%be:.=%)do set/a n+=1&set t!n!=%%a
  30. set/a n=((t4-t1)*60+t5-t2)*6000+t6-t3,s=n/100,w=n%%100/10,f=n%%100%%10
  31. endlocal&(if %3.==. (echo %s%.%w%%f%) else set %3=%n:-=%)&exit/b
复制代码

[ 本帖最后由 netbenton 于 2009-10-10 07:58 编辑 ]
1

评分人数

    • zqz0012005: net兄对数字也很有研究PB + 16 技术 + 1

TOP

返回列表