中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-08 03:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 开平方(精度为小数点后5位) 查看 700 回复 4
楼 主 开平方(精度为小数点后5位) 发表于 2008-04-05 16:51 ·  中国 广东 广州 越秀区 电信
初级用户
积分 38
发帖 10
注册 2007-10-01 13:25
18年会员
UID 98696
性别 男
来自 GZ
状态 离线
算法思路由 terse 提出。本人扩大了可行域。

@echo off
set /p n=输入待开方数(0~89999999):
set a=2
:acr
set /a a=(n/a+a)/2,b=a*a
if %b% gtr %n% goto :acr
if %b% lss 0 goto acr
if %b% equ %n% goto :ok
set /a t=n-b,k=a
:loop1
set /a t*=100,x=k*20,m=10
:loop2
set /a m-=1,s=m*(m+x)
if %s% gtr %t% goto loop2
set /a t-=s,c+=1,k=k*10+m,r=r*10+m
if %c% lss 5 goto loop1
:ok
if not "%r%" == "" set a=%a%.%r%
echo 结果:%a%
pause>nul


[ Last edited by dreamseed on 2008-4-5 at 05:13 PM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
plp626 +6 2008-04-05 17:48
knoppix7 +8 2008-04-05 18:33
沉浸于脚本的流浪客。
纳须弥于芥子,容世界之脚本...
2 set /? 发表于 2008-04-05 17:08 ·  法国
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
- 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符

利用逻辑运算符
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
3 发表于 2008-04-05 17:12 ·  中国 广东 广州 越秀区 电信
初级用户
积分 38
发帖 10
注册 2007-10-01 13:25
18年会员
UID 98696
性别 男
来自 GZ
状态 离线
能具体写一个么?
沉浸于脚本的流浪客。
纳须弥于芥子,容世界之脚本...
4 发表于 2008-04-05 18:04 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
批处理搞数学计算尤其是小树 ,还真没研究过,

这样的帖子就当娱乐,可以作为一个小函数备用,

研究下算法
---------------------------
纯计算数学的问题,主要是迭代公式:Xn+1=(Xn+A/Xn)/2 极限----->A^(1/2)

楼主初始时把X1设为2,然后在:acr模块迭代计算A^(1/2)的整数部分,

if %b% lss 0 goto acr不是多余的,用来防止溢出为负数,我疏忽了

另外将X1设为n/2可以减少迭代次数,

后面计算小数,谁分析下,我没耐心了

[ Last edited by plp626 on 2008-4-5 at 06:46 PM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
5 发表于 2008-04-07 19:02 ·  中国 甘肃 兰州 电信
初级用户
积分 47
发帖 31
注册 2008-03-17 19:04
18年会员
UID 113236
性别 男
状态 离线
下一个看一下,谢谢。
论坛跳转: