|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-14 08:54 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
77 楼』:
其实对于批处理做除法运算, 我也有一个思路, 只是比较恐惧, 不敢写.
1. 写出来代码会非常复杂.
2. 执行效率会很低. 初步测算一下, 如果除数是几位数, 被除数是二十位. 执行时间很可能会达到几十秒甚至更多.
不知哪位高手出来挑战一下除法运算, 要求像前面的加, 减, 乘运算一样, 可以处理浮点数, 位数不受限制. 我们拭目以待!!!
|
|
2006-10-14 09:05 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
78 楼』:
不要认为不可能, 没有什么不可能的, 在我眼里就没有这个词.
用批处理实现无限制除法运算是完全可行的~~~!
|
|
2006-10-14 09:13 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
79 楼』:
Quote: | Originally posted by qwe1234567 at 2006-10-14 08:54:
CMD功能有限,做除法运算的时候,对整数除法结果的小数部分直接做丢弃处理,但是也有取余的计算,
set/a a=97%7
6
就是取余计算 |
|
虽然有模运算,并且可以把结果表示成 商……余数 的格式,但那只是针对整数而言。如果按照浮点数加法运算的模式,按位来做除法,那小数除法的算法又该如何写呢?即使算法能写出来,恐怕也是相当复杂而效率又比较低下的吧?
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-10-14 09:15 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-14 09:41 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
81 楼』:
代码更新在86楼,欢迎继续测试
[ Last edited by he200377 on 2006-10-17 at 01:00 ]
|
|
2006-10-16 00:31 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-16 01:05 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
83 楼』:
Quote: | Originally posted by qwe1234567 at 2006-10-16 01:05:
错误还挺多的,3.2/0.32 和0.32/0.032无法算! |
|
我想个解决根本的方法,呵呵,算之前把小数的位数搞一样,呵呵,问题就好解决多了
[ Last edited by he200377 on 2006-10-16 at 02:11 ]
|
|
2006-10-16 02:10 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-16 06:24 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
85 楼』:
Quote: | Originally posted by he200377 at 2006-10-16 02:10:
我想个解决根本的方法,呵呵,算之前把小数的位数搞一样,呵呵,问题就好解决多了
[ Last edited by he200377 on 2006-10-16 at 02:11 ] |
|
he200377兄81楼的代码一定花了不少心思, 呵呵~ 不错.
但在运算浮点数时有很大的局限性, 这里提几点不成熟的建议, 也不知分析得是否正确:
1. 生成ver_.txt临时文件, 这个只要把变量用好一点, 完全不用产生临时文件.
2. 看了去零的那段子函数, 你用了二十行, 其实几行就可以解决了.
3. 最大的缺陷就是你说的9.99/9, 看了你的代码, 在这点上考虑得不全面. 出错主要在去掉除数与被除数时的小数点进位. 在最后小数点进位时, 无论%x_wei%是什么值你都采取0.xxx这样的方式进位. 整数本来为正数, 小数点进位时整数位就成了小数.
这里你说的把小数位先对齐再计算也是一个好主意, 但原本就只可以运算9位以内的数, 这样运算范围会变得更小. 不是一个好的解决方案.
建议你在最后把运算结果的小数点位置读取出来, 再根据%x_wei%来进位. 如果位数不足再补零.
4. qwe1234567版主说的3.2/0.32 和0.32/0.032无法算!当除数的整数为零时出错很严重, 在最后处理小数点时出现了死循环.
5. 0.123/123=0.002609756097 这里在读取被除数时产生了错误, 字符被倒置.
这个算法还不成熟, 而且有局限性, 最重要是不能突破位数的限制.
但处理整数时却可以提高精度.
兄弟还得继续努力, 要想突破位数限制这个算法是无法实现的.
[ Last edited by pengfei on 2006-10-16 at 08:20 ]
|
|
2006-10-16 08:11 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
86 楼』:
更新在91楼
[ Last edited by he200377 on 2006-10-18 at 05:54 ]
|
|
2006-10-17 01:00 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
87 楼』:
呵呵,其实做运算,我认为把 cmd 能做的事情交给它做还是能很大的提高效率的,呵呵
|
|
2006-10-17 01:01 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
88 楼』:
回pengfei兄:
1. 生成ver_.txt临时文件, 这个只要把变量用好一点, 完全不用产生临时文件.
这点我也考虑过,我之所以没有那样做,是考虑到了通用性,你没有发现每个call 都可以完全移植吗?呵呵
2. 看了去零的那段子函数, 你用了二十行, 其实几行就可以解决了.
呵呵~我是这样想的,把几行的放出来show ,哈哈~共同学习吗
[ Last edited by he200377 on 2006-10-17 at 01:06 ]
|
|
2006-10-17 01:05 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-17 02:38 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
90 楼』:
Quote: | Originally posted by he200377 at 2006-10-17 01:05:
回pengfei兄:
1. 生成ver_.txt临时文件, 这个只要把变量用好一点, 完全不用产生临时文件.
这点我也考虑过,我之所以没有那样做,是考虑到了通用性 ... |
|
关于生成临时文件和去零, 你可以参考前面的脚本, 这样的代码都有.
|
|
2006-10-17 03:08 |
|