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

[数值计算] 如何用 set /a 开根号?

用 set /a 可以计算 + - * /  等,但如何用它计算代根号的数呢?
请教

转帖
  1. @echo off
  2. set a=2
  3. set/p p=请输入需要开平方的数字(0~321063之间)
  4. set/p w=请输入精确到小数点后几位
  5. :lp
  6. set /a a=(p/a+a)/2,n=a*a,y=p-n
  7. set r=%a%
  8. if %n% gtr %p% goto lp
  9. if %n% equ %p% goto ok
  10. :lp1
  11. set/a b+=1,m=0,x=r*20,y*=100
  12. :lp2
  13. set/a m+=1,s=(x+m)*m
  14. if %s% gtr %y% goto lp3
  15. goto lp2
  16. :lp3
  17. set/a m-=1,s=(x+m)*m,y-=s
  18. set r=%r%%m%&set t=%t%%m%
  19. if %w% equ %b% goto ok
  20. goto lp1
  21. :ok
  22. if not "%t%" == ""  set a=%a%.%t%  
  23. echo %p%开平方结果: %a%
  24. pause>nul
  25. goto :eof
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

最早代码是计算到321063 后梦想添加 判断if %n% lss 0 goto lp 可以扩大到89999999
  1. @echo off
  2. set a=2
  3. set/p p=请输入需要开平方的数字(0~89999999之间)
  4. set/p w=请输入精确到小数点后几位(9以内)
  5. :lp
  6. set /a a=(p/a+a)/2,n=a*a,r=a,y=p-n
  7. if %n% lss 0 goto lp
  8. if %n% gtr %p% goto lp
  9. if %n% equ %p% goto ok
  10. if "%w%"=="" goto ok
  11. set/a m=10,x=r*20,y*=100,b+=1
  12. :lp1
  13. set/a m-=1,s=(x+m)*m
  14. if %s% gtr %y% goto lp1
  15. if %w% neq 0 set/a y-=s,r=r*10+m,t=t*10+m,m=10,x=r*20,y*=100,w-=1&goto lp1
  16. :ok
  17. if not "%t%" == ""  set a=%a%.%t%
  18. echo %p%开平方结果: %a%
  19. pause>nul
复制代码

TOP

原帖由 Batcher 于 2008/8/19 17:45 发表
转帖@echo off
set a=2
set/p p=请输入需要开平方的数字(0~321063之间)
set/p w=请输入精确到小数点后几位
:lp
set /a a=(p/a+a)/2,n=a*a,y=p-n
set r=%a%
if %n% gtr %p% goto lp
if %n% equ %p% goto ok
...



好像有些错误,例如开 2 精确到小数点后6位 ;开 4 精确到小数点后6位

TOP

返回列表