![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 14:08 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [原创]实数加减运算脚本! |
| 可打印版本 6,535 / 23 |
| 第1楼 pengfei | 发表于 2006-10-06 23:42 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
[原创]实数加减运算脚本! 实数加减运算脚本已更新, 功能更加强大.
1. 可以进行多种加减法运算, 如:(X+Y, X-Y, -X+Y, -X-Y). 2. 加入了错误输入的检测. 3. 运算数不受位数限制, 理论上可以运算N位的范围. 可以替代计算器进行加减法运算. 却不用受位数的限制. 这是该脚本最大的优势. 由于时间关系没有进行全面测试, 不足的地方请指正, 大家一起探讨, 研究~~~! 今天中秋节, 祝联盟所有朋友中秋快乐, 学习进步, 天天开心~~~! 送大家一个礼物"浮点数加减运算脚本". 代码刚写出来, 还有很多不足的地方, 大家一起探讨! 先前的代码有一个致使的缺陷, 现已修正. 请测试... 相关讨论: [共同参与][挑战思路][批处理处理浮点运算] 关于数值时的进制问题! [ Last edited by namejm on 2006-10-19 at 00:39 ] 附件 浮点数加减运算脚本.rar (1.49 KiB) 无限制实数加减运算脚本.rar (2.21 KiB) |
|
| 第2楼 bg | 发表于 2006-10-07 01:51 |
| 初级用户 发帖 34 积分 118 | |
|
收藏看看
|
|
| 第3楼 不得不爱 | 发表于 2006-10-07 03:40 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
应该可以计算到小数点后面9位啊
[ Last edited by qwe1234567 on 2006-10-7 at 03:48 ] |
|
| 第4楼 pengfei | 发表于 2006-10-07 04:25 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
不行, 9位会溢出...
[ Last edited by pengfei on 2006-10-7 at 06:17 ] |
|
| 第5楼 pengfei | 发表于 2006-10-07 06:25 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
发现一个怪现象...
|
|
| 第6楼 不得不爱 | 发表于 2006-10-07 06:37 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
1:我那个代码却可以算小数位后9位,应该是方法的问题,我的是小数点后首位见0才在首位加1,而你的是所有小数位的首位都加1,所以你的代码小数位要少1位!
2:浮点数的减法运算有点问题: 看下下面的错误: 5.69-65.654=-59.6371 53.698-654.95=-600.16585 |
|
| 第7楼 pengfei | 发表于 2006-10-07 07:04 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
原来是执行顺序出错了, 代码已修正.
5.69-65.654=-59.964 53.698-654.95=-601.252 版主的代码为分析是零就添1, 当时我也想采用这种方法, 但稍微麻烦一点. 也就没有使用此方案. 而那种方案当小数位第一位为零时照样只能运算8位小数, 并不是都能运算9位小数. 所以我觉得无论是零与否都添1简单一点, 后面也要少用一个判断. 说明也要少一些文字^_^ [ Last edited by pengfei on 2006-10-7 at 07:10 ] |
|
| 第8楼 不得不爱 | 发表于 2006-10-07 08:11 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
那种方案当小数位第一位为零时照样能运算9位小数
|
|
| 第9楼 pengfei | 发表于 2006-10-07 08:18 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
发现的确是这样的, 而我的代码小数第一位为零可以运算9位数, 不为零则只可以运算8位数.
|
|
| 第10楼 electronixtar | 发表于 2006-10-08 05:25 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
建议pengfei写一个bat的 math library,然后以后大家bat变成就直接include了,^_^
|
|
| 第11楼 不得不爱 | 发表于 2006-10-08 05:57 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
Originally posted by pengfei at 2006-10-7 06:25: |
|
| 第12楼 pengfei | 发表于 2006-10-12 08:17 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
看来是跟CMD的数据类型有直接关系, set /a运算时的数据存储类型应该是长整型. 而22...+11...超过了他的最大存储空间, 就会溢出, 所进的位把符号位填满了. 于是出现负数.
而22..-11...却没达到最大存储容量. 因此执行正常. [ Last edited by pengfei on 2006-10-12 at 08:28 ] |
|
| 第13楼 pengfei | 发表于 2006-10-12 08:27 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
实数运算脚本已更新在一楼第1段, 功能更加强大, 无任何限制实现各种加减运算!
欢迎大家测试... |
|
| 第14楼 不得不爱 | 发表于 2006-10-12 21:27 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
我也来1个!
[ Last edited by qwe1234567 on 2006-10-13 at 01:11 ] 附件 实数加减运算脚本.rar (1.17 KiB) |
|
| 第15楼 pengfei | 发表于 2006-10-12 23:01 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
请输入第一个小数:1111111111.1111111111
请输入第二个小数:-1111111111.1111111112 计算结果是: 1111111111.1111111111-1111111111.1111111112=9999999999.9999999999 看了一下, qwe1234567版主的代码写得还是不错. 你在进行各种加减法运算时走了捷径, 走的这个捷径却会出现致命错误. 另外在格式输出上控制得不太严格. 我的代码使用更多的可调用函数来实现各种加减法运算, 完全模拟了真实的人工计算. [ Last edited by pengfei on 2006-10-12 at 23:10 ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |