中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-06 21:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]实数加减运算脚本! 查看 6,300 回复 23
16 发表于 2006-10-12 23:50 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
已经修改,在格式输出上正常.减法上的错误已经解决!请测试!
1111111111.1111111111-1111111111.1111111112=-0.0000000001
17 发表于 2006-10-13 00:02 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
18 发表于 2006-10-13 00:34 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
比你的是要慢, 测试同样的运算你的为三十多毫秒, 我的为五十来毫秒.

你的代码为小数整数一起运算, 在判断上走了捷径, 我当时编写的初忠是完全模拟人工计算. 因此代码也是最原始的计算方式.

我那段代码中使用的变量更多, 运算更为复杂,这也是影响速度的原因之一. 算法是程序的灵魂, 解决同样的问题效率都会不一样. 由于时间关系, 代码的优化已及更新稍候进行...

[ Last edited by pengfei on 2006-10-13 at 01:18 ]
19 发表于 2006-10-13 00:37 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
实际以上脚本运算N位的数值范围并不现实, 原因在于环境变量存储空间是有限的...
20 发表于 2006-10-13 01:27 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
21 发表于 2006-10-13 02:00 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
嘎嘎~~~! 关于一楼第1段代码真是不忍心修改, 虽然算法是最原始的. 但实现这样的算法用批处理的三种基本结构来完成. 自己都有点沾沾自喜, 呵呵~ 我的心血呀!!!

还是不打算修改了, 要么就用新的算法写一段新的代码.

兄弟们多多帮忙测试一下一楼第1段代码的BUG...
22 发表于 2007-02-23 06:20 ·  中国 广东 湛江 电信
高级用户
★★★
积分 959
发帖 311
注册 2006-04-11 14:08
20年会员
UID 53665
性别 男
来自 广东-LianJiang
状态 离线
看了一下老贴,觉得这贴算法值得大家好好学习下,于是顶上来......
κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
23 发表于 2008-11-04 01:04 ·  中国 广东 深圳 福田区 电信
新手上路
积分 5
发帖 6
注册 2008-11-02 15:33
17年会员
UID 129773
性别 男
状态 离线
原来你们早就处理好此事,我还想自己也写个计算器,不过,我想把你们的全部合并,做一个混合运算的calc

有无支持平方根的批处理??
24 Re 23楼 发表于 2008-11-04 01:32 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
多搜索就有了
@echo off
set a=2
set/p p=请输入需要开平方的数字(0~89999999之间)
set/p w=请输入精确到小数点后几位(9以内)
:lp
set /a a=(p/a+a)/2,n=a*a,r=a,y=p-n
if %n% lss 0 goto lp
if %n% gtr %p% goto lp
if %n% equ %p% goto ok
if "%w%"=="" goto ok
set/a m=10,x=r*20,y*=100,b+=1
:lp1
set/a m-=1,s=(x+m)*m
if %s% gtr %y% goto lp1
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
:ok
if not "%t%" == "" set a=%a%.%t%
echo %p%开平方结果: %a%
pause>nul
论坛跳转: