中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 12:43
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » [共同参与][挑战思路][批处理处理浮点运算]
可打印版本  45,390 / 136
第46楼 pengfei 发表于 2006-10-09 05:10
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
qwe1234567版主43楼去小数位前置零再运算的方案很不错. 在小数进位时很好地玩了一把字符截取, 玩得漂亮. ^_^

小数整数都可以运算9位数的代码更新在4楼第一段.

加入了判断错误输入的功能. 如:
1. 如果输入的运算数中存在除阿拉伯数以外的字符, 将提示你重新输入.
2. 若小数和整数位数超过脚本运算范围, 也会让你重新输入.

该脚本为只要你能看到最终的运算结果, 应该都是正确的!

期待大家把没有考虑到的问题测试出来...
第47楼 pengfei 发表于 2006-10-09 20:24
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
终于解决浮点运算对字符位数的限制, 理论上可以运算N位的数值范围.

算法:
1. 把输入的两个运算值, 分别以.号做为基准, 向两端补零对齐(在这之前已经去掉了无用的零), 小数和整数部分分别赋给不同变量.
2. 先运算小数部分, 将第1个数的最后一位和第2个数的最后一位做加法运算. 再将运算结果的最后一位赋给结果变量1.,如果运算结果存在两位数, 运算次低位时自动加1. 如此循环, 直到把小数的所有位数运算完成. 得到了小数部分的运算数.
2. 整数部分的运算和小数的一样. 得到结果变量2.
3. 结果变量1, 结果变量2. 将他们中间加.号就得到了准确的运算结果...

欢迎大家测试...



[ Last edited by pengfei on 2006-10-11 at 09:07 ]

附件
实数加法运算脚本.rar (1.23 KiB)
第48楼 NaturalJ0 发表于 2006-10-09 20:57
银牌会员 发帖 533 积分 1,181
看了下你的描述,代码还没仔细看,要是说错了别见怪。 = =b
我觉得整数部分和小数部分可以不分开。开头你已经把数位都对齐了,应该补的零也补好了。小数部分有几位也是清楚的,直接去掉小数点,当一个整数处理,处理好后再补上小数点,最后把末尾多余的零去掉。
第49楼 pengfei 发表于 2006-10-09 21:44
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
RE:NaturlJ0

我把小数和整数分开是考虑到格式输出的问题. 如果小数部分为零就不输出0和点号.
第50楼 namejm 发表于 2006-10-10 09:12
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  我也来一段代码,按位做加法操作的,理论上可以对N位的数值进行处理。稍显遗憾的是,对输入的检测不甚严格。


[ Last edited by namejm on 2006-10-10 at 09:32 ]
第51楼 pengfei 发表于 2006-10-10 09:48
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
namejm兄也得不错吗. ^_^

47楼代码修正了最后进位时的毛病, 多谢namejm兄提醒.

欢迎大家测试...
第52楼 redtek 发表于 2006-10-10 20:43
金牌会员 发帖 1,147 积分 2,902
建议将代码传入国际著名的DOS批处理交流网站(我不知道是哪个站点),
代码上标注上 www.cn-dos.net 以及 China 中国字样~:)

将来把创新、改进、实用的东东同时也放到全世界著名的批处理交流网站上(英文站点),让这些智慧的创造烙上中国的印章~:)
第53楼 pengfei 发表于 2006-10-10 22:50
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
其实批处理和其他高级语言一样, 算法是灵魂, 创新是动力. 而结构化程序设计的思想是我们必须坚持的理念.

三种基本结构(顺序结构, 选择结构, 循环结构)是可以解决任何复杂问题的.

当你更深地认识了这种结构化的设计思路, 写代码也就非常容易了.
第54楼 electronixtar 发表于 2006-10-11 01:21
铂金会员 发帖 2,672 积分 7,493
五体投地~~
第55楼 namejm 发表于 2006-10-11 01:26
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  到目前为止,各位的代码都只能处理非负的浮点数,下一步该考虑一下怎么处理纯负数、正负数混合的情况,以使得代码能真正处理所有的浮点数。
第56楼 pengfei 发表于 2006-10-11 01:33
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
经过测试, 我47楼的代码和namejm版主的代码已经没有任何问题.

这个问题得到完美的解决, 不但能够处理浮点运算, 还解决了批处理运算位数的限制(发现很多计算器都有位数限制, windows自带的计算器只能运算31位. 看来我们的脚本在这个方面可以发挥他的特长了, 哈哈~~~!)

正想把这个无限制加减法运算的代码合并, 代码正在编写ing... 将放到我那个实数运算脚本的帖子中去!
第57楼 vkill 发表于 2006-10-11 02:09
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
佩服,佩服~~
第58楼 不得不爱 发表于 2006-10-11 02:46
超级版主 发帖 2,044 积分 5,310 来自 四川南充
终于解决浮点运算对字符位数的限制, 理论上可以运算N位的数值范围.
分别把两个数的整数和小数部分提取出来
小数部分在低位用0填充,使得两个数的数位各自对齐
从小数的最低位开始,按每位计算1次两个数的和,超过9就向次高位进1,直到整数的最高位为止
(47楼计算带2个小数点的小数出现错误,
32165.464.1654 +1321.654.31654 =33487.1118
50楼计算首位是小数点也出现错误,
请输入第一个数:.31654
请输入第二个数:1.31654
找不到操作数。
命令语法不正确。)
在本代码了都没有哪两个问题。47楼和50楼的代码还需要改进。


[ Last edited by qwe1234567 on 2006-10-11 at 09:33 ]

附件
实数计算脚本.rar (834 bytes)
第59楼 不得不爱 发表于 2006-10-11 02:47
超级版主 发帖 2,044 积分 5,310 来自 四川南充
Originally posted by pengfei at 2006-10-11 01:33:
经过测试, 我47楼的代码和namejm版主的代码已经没有任何问题.

这个问题得到完美的解决, 不但能够处理浮点运算, 还解决了批处理运算位数的限制(发砮..

两位的代码都有点问题!看下我的!
第60楼 vkill 发表于 2006-10-11 02:52
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by qwe1234567 at 2006-10-11 02:46:
终于解决浮点运算对字符位数的限制, 理论上可以运算N位的数值范围.
分别把两个数的整数和小数部分提取出来
小数部分在低位用0填充,使得两个数 ...

计算结果是:
0.9999999999999999999999999999999999999999999999999999999999999+0.77777777777777
7=177.7777769777777769999999999999999999999999999999999999999999999
请按任意键继续. . .
???
上一页  1 2 3 4 5 6 710  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023