![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 10:22 |
共 48,037 主题排行 / 350,122 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [共同参与][挑战思路][批处理处理浮点运算] |
| 可打印版本 43,223 / 136 |
| 第1楼 redtek | 发表于 2006-10-04 04:10 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
[共同参与][挑战思路][批处理处理浮点运算] ) 此贴为抛砖引玉,大家扩展思路,互动式共同参与批处理学习~:)
) [用DOS内部命令计算两个浮点数的和] 例如: Sum.Bat 12.99 438.76 结果: 451.75 规则: 负数不考虑 有可能人为故意或无意输入的非数字等错误暂不考虑 只能使用DOS内部命令(无DOS版本限制),外部命令禁止使用。 只考虑计算%1与%2所出现的两个浮点数相加,更多的浮点相加暂不考虑。 允许数字出现的格式: 0.91 0.10 2.12 1092.90 暂不允许出现的格式: .91 .9 (小数精度:小数点儿后两位) 目的: 拓展思路、增加批处理兴趣、增加大家互动学习亲自动手玩、 通过我们大家不断的交互让批处理的使用让每个人都能参与共同进步:) 方向: 这只是其中一个内容,更多的内容需要网友们共同发现、版主支持:) 大家可以用任何异想天开的任何想法实现上面问题~:) 为什么要出现此贴: 只有互动每个人都参与,自己的水平才能提高更快。 将遇到问题时才问、平时不主动学习批处理的方式变成大家主动一步一步共同提高:) 奖励: 优秀的解题与不同思路的观点解题,由版主象神一样的指导、示范, 然后给大家加分奖励以示激励~:) 其它: 等待大家有更好想法和非常实用的互动学习与应用的题目,大家一起参与:) =================================== |
|
| 第2楼 electronixtar | 发表于 2006-10-04 04:20 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
^_^ |
|
| 第3楼 redtek | 发表于 2006-10-04 04:31 |
| 金牌会员 发帖 1,147 积分 2,902 | |
Originally posted by electronixtar at 2006-10-4 04:20: 精彩~~ 加了6分~:) |
|
| 第4楼 pengfei | 发表于 2006-10-04 04:47 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
本楼第一段的代码为最新修改的. 功能更加强大, 欢迎大家测试...
下面一段也是通用的, 但小数只能运算8位数, 且没有判断错误输入和判断输入的数值是否符合要求的功能. 相关问题讨论: 关于数值运算时的进制问题! [ Last edited by pengfei on 2006-10-9 at 05:01 ] |
|
| 第5楼 redtek | 发表于 2006-10-04 05:12 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
过瘾!!!给pengfei兄加6分~:)
|
|
| 第6楼 redtek | 发表于 2006-10-04 05:18 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
两位大侠之作非常精彩~~
个人感觉要学好批处理和DOS批处理以及脚本的应用, 其实就相当于在一步一步走向编程的道路:) 或是开发人员以一种程序思维、和数据结构的理解方式来让批处理达到一个更高的水平:) 这就是为什么很多网友学了DOS批处理应用以后, 过了好多年再也提不高的原因之一:) 而有的大侠,确是每一天每一步都在不断的向上走, 技巧已经都不再重要了,应用到的数据结构可以解决很多问题:) 无论是在批处理里面还是在代码开发上,它们都是相通的:) [ Last edited by redtek on 2006-10-4 at 05:21 ] |
|
| 第7楼 pengfei | 发表于 2006-10-04 10:15 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
终于解决了小数位数的局限, 可以运算各种类型的数值, 小数位数不受限制. 暂时没有解决错误输入的问题.
代码更新在4楼! |
|
| 第8楼 namejm | 发表于 2006-10-04 11:18 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
发一段代码,匆忙中没来得及对数据进行查错处理和代码的优化,可以适应小数位数不一致的情况。基本思路是对数值的整数部分和小数部分分别进行计算:
[ Last edited by namejm on 2006-10-4 at 11:20 ] |
|
| 第9楼 electronixtar | 发表于 2006-10-04 20:17 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
还是脚本简单些 ^_^
|
|
| 第10楼 pengfei | 发表于 2006-10-04 23:50 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
解决了小数点后第一位为0且后面出现8或9, 导致数值为无效数字的问题.
一个全新的算法, 大概的意思是, 读取小数位数不足的补零. 去.号后小数和整数一起运算, 运算完成后再根据记录的小数点位置准确地插入到相应的地方, 从而完成了浮点数值的运算. 这段代码具有更好的通用性, 时间仓促没来得及优化: [ Last edited by pengfei on 2006-10-6 at 03:51 ] |
|
| 第11楼 namejm | 发表于 2006-10-05 00:44 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
pengfei 『第 10 楼』的代码先把浮点数用0把位数补齐,然后再把小数点去掉,对新数进行处理,然后再把小数点的位置复原,这个思路相当新颖,比我在『第 8 楼』的思路又更进了一步,优化之后,代码将会比我那段更简洁。看来,多多讨论真的很容易碰撞出智慧的火花^_^
|
|
| 第12楼 pengfei | 发表于 2006-10-05 01:43 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
^_^ 呵呵~ namejm兄八楼代码的思路和我四楼的一样, 如果小数第一位是零且后面跟了8或9就会出错, 还是进制问题, 而10楼的代码则不会.
|
|
| 第13楼 不得不爱 | 发表于 2006-10-05 04:44 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
我试了下,如果首位是0的数,后面有8和9都会出错!就是10楼的也一样!
|
|
| 第14楼 pengfei | 发表于 2006-10-05 04:49 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
版主是在整数的最高位加零吧!
你试试在小数点后第一位加零, 再比较两段代码的运算结果. |
|
| 第15楼 不得不爱 | 发表于 2006-10-05 05:09 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
下面的是首位是0的数自动去0,小数点前没有数字自动加0,小数点末尾有0自动去0!
[ Last edited by qwe1234567 on 2006-10-6 at 07:40 ] |
|
| 1 2 3 4 … 10 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |