Board logo

标题: [数值计算] 如何用 set /a 开根号? [打印本页]

作者: mkl    时间: 2008-8-19 17:40     标题: 如何用 set /a 开根号?

用 set /a 可以计算 + - * /  等,但如何用它计算代根号的数呢?
请教
作者: Batcher    时间: 2008-8-19 17:45

转帖
  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
复制代码

作者: terse    时间: 2008-8-20 00:05

最早代码是计算到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
复制代码

作者: mkl    时间: 2008-8-22 18:24

原帖由 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位




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2