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

[数值计算] [分享]批处理使用牛顿迭代法快速求平方根或近似值

  1. @echo off
  2. rem 原理来源于牛顿迭代法,只能计算1-214748,保留两位小数
  3. set /p a=请输入数:
  4. set /a a*=10000,b=a
  5. for /l %%a in (1,1,100) do set /a b=(b+a/b)/2
  6. set /a c=b*b,a/=10000
  7. echo %a%的平方根或近似值为:%b:~,-2%.%b:~-2%
  8. echo %b:~,-2%.%b:~-2%*%b:~,-2%.%b:~-2%=%c:~,-4%.%c:~-4%
  9. pause>nul
复制代码
[ 本帖最后由 batman 于 2009-4-26 03:54 编辑 ]
2

评分人数

    • 1055367558: 还可以,就是精度差了点技术 + 1
    • 随风: 我只能说,牛!PB + 11
***共同提高***

高手,请问有没有支持小数求平方根或近似值计算批处理

TOP

回复 3# defanive


    可以加个for/l。。减点代码

TOP

7# 嗜血魂歌


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

TOP

回复 5楼 的帖子

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

TOP

回复 4楼 的帖子

有道理,不过话说那个时候我的批处理还是个小菜。。。

——————

貌似论坛不支持缩进啊,怎么显示#160;?

[ 本帖最后由 defanive 于 2009-4-26 12:27 编辑 ]
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 3楼 的帖子

无数年前你不知道使用缩进,但是现在贴代码出来的时候应该缩进一下啊。
^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

无数年前写的东西,算法是(n/x+x)/2,精度最高0.0001,支持1~999999999
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::Made By Defanive
  4. :start
  5. cls
  6. echo 由于CMD位数计算的限制,精确度最高0.0001
  7. echo 越大的数字数字精确度越来越低
  8. echo Made By Defanive
  9. echo.
  10. set/p type=输入一个整数:
  11. if %type% gtr 999999999 goto start
  12. if %type% lss 1 goto start
  13. set/a xn=type
  14. set/a times=1
  15. if %type% geq 99 set/a times=2
  16. if %type% geq 9999 set/a times=3
  17. if %type% geq 999999 set/a times=4
  18. if %type% geq 99999999 set/a times=5
  19. for /l %%a in (1,1,4) do (
  20. set/a yn=!xn!*100
  21. set/a zn=!yn!/100
  22. if not !yn! lss 0 (
  23. if !xn!==!zn! (
  24. set/a xn=!yn!
  25. )
  26. )
  27. )
  28. set/a sn=xn
  29. set sqn=1
  30. for /l %%a in (1,1,20) do (
  31. set/a sqn=sn/sqn+sqn
  32. set/a sqn=sqn/2
  33. )
  34. echo.
  35. echo √%type% ≈ !sqn:~0,%times%!.!sqn:~%times%!
  36. pause>nul
  37. goto start
复制代码

[ 本帖最后由 defanive 于 2009-4-26 12:28 编辑 ]
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

建议各位版主可以多找点这样的数学题...有时讨论算法也是件好事.

TOP

返回列表