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

[数值计算] 批处理开平方根1-99以内的数

如果答案有小数。则保留5位有效数字
思路来自http://www.bathome.net/thread-1760-1-1.html
  1. @echo off &setlocal enabledelayedexpansion
  2. :action
  3. set /p input="(1-9):"
  4. set /a a=0,n=0
  5. :a
  6. set /a a+=1,a1=0
  7.    :a1
  8.    set /a a1+=1,test=(n*10+a1)*(n*10+a1)
  9.    if %test% equ %input% (echo %a1% &pause &goto :end)
  10.    if %test:~0,1% lss %input% (goto :a1)
  11. set /a n=n*10+a1-1
  12. if %a% lss 5 goto :a
  13. echo %n:~0,1%.%n:~1%
  14. pause>nul
  15. :end
  16. goto :action
复制代码
------------------------------------------------1-99的---------若有小数保留四位---------------------------
  1. @echo off
  2. :action
  3. set /p input="(1-99):"
  4. if "%input%"=="" goto :action
  5. set /a a=0,n=0
  6. :a
  7. set /a a+=1,a1=0
  8.     :a1
  9.      set /a a1+=1,test=(n*10+a1)*(n*10+a1)
  10.      if %test% equ %input% (echo %a1% &pause &goto :end)
  11.     if %test% lss %input% (goto :a1)
  12. set /a n=n*10+a1-1,input*=100
  13. if %a% lss 4 goto :a
  14. echo %n:~0,1%.%n:~1%
  15. pause>nul
  16. :end
  17. echo,&set input=
  18. goto :action
复制代码
如有缺点大家可以改的也帮忙改改  主要也是书上来的思路 所以,有缺点大家帮忙改哈
2

评分人数

回复 3楼 的帖子

要说多余的话,应该是enabledelayedexpansion多余了,保留setlocal,在最后用相应的endlocal清空变量。
心绪平和,眼藏静谧。

TOP

回复 2楼 的帖子

关于效率……
我也是在书上看的……是自己看到的比较好的方案了吧……
还有 这里虽然是原创代码区,但是希望大家也有讨论区的热情。
有意见要多提哈……


怎么没人发现上面的setlocal enabledelayedexpansion是多余的?

TOP

占个沙发...
不错哦,但好像效率有点低...

TOP

返回列表