![]() |
中国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: 两位的代码都有点问题!看下我的! |
|
| 第60楼 vkill | 发表于 2006-10-11 02:52 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
Originally posted by qwe1234567 at 2006-10-11 02:46: 计算结果是: 0.9999999999999999999999999999999999999999999999999999999999999+0.77777777777777 7=177.7777769777777769999999999999999999999999999999999999999999999 请按任意键继续. . . ??? |
|
| 上一页 1 2 3 4 5 6 7 … 10 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |