![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 12:42 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [共同参与][挑战思路][批处理处理浮点运算] |
| 可打印版本 45,389 / 136 |
| 第31楼 不得不爱 | 发表于 2006-10-06 00:38 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
15楼代码已更新为整数浮点数分段运算
欢迎大家测试... |
|
| 第32楼 不得不爱 | 发表于 2006-10-06 01:11 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
10楼代码错误!
请输入运算数一:132165.134646454 请输入运算数二:132654.6546546 -2 132165.134646454+132654.6546546=-2? |
|
| 第33楼 pengfei | 发表于 2006-10-06 03:38 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
10楼已经说明, 小数位最多可运算8位数. 而你的小数部分为9位, 溢出了...
发现15楼的代码有几点缺陷; 运算错误, 多加了1. 零的问题上没有考虑完全(111+111=223), (0.23+1.08=2.31)... 版主还需要改进代码, 具体10楼的代码和4楼的代码都用最前位添1的办法解决了(这也是为什么10楼和4楼的代码小数部分只能运算8位的原因了). [ Last edited by pengfei on 2006-10-6 at 04:05 ] |
|
| 第34楼 pengfei | 发表于 2006-10-06 03:41 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
另外4楼的代码经过改进已经可以通用了, 甚至比10楼的代码更具优越性.
具体表现在它的运算范围更大, 小数整数最多可以运算17位. 代码更简洁, 容错性更好! 刚写出来, 可能还有些问题还没有考虑进去. 期待大家进行全面测试... |
|
| 第35楼 不得不爱 | 发表于 2006-10-06 07:43 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
我刚才检查了下,原来是把set/a n1+=1打成了set n1+=1,所以出错。
15楼已经更新!小数最多可以9位,整数最多可以运算9位,支持A 136.987 236这种输入和输入A后按照提示输入! 欢迎大家测试... [ Last edited by qwe1234567 on 2006-10-7 at 03:45 ] |
|
| 第36楼 不得不爱 | 发表于 2006-10-06 07:50 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
4楼上面的代码有错误,整数前有0就出错,小数后位对不齐!
a 008.64 36.6 无效数字。数字常数只能是十进制(17),十六位进制(0x11)或 八进制(021)。 .70 请按任意键继续 . . . a 8.64 36.6 44.70 [ Last edited by qwe1234567 on 2006-10-6 at 07:54 ] |
|
| 第37楼 pengfei | 发表于 2006-10-06 09:52 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
版主这种a 008.64属于错误输入的范筹吧, 这个我是没考虑过, 还是测试浮点运算可能出现的各种情况吧! 36楼测试的错误我并没有发现...
版主说的前面有0就出错, 肯怕不会吧, 取位循环去零法可以去最高位所有的零. 而小数后位对不齐, 这是格式输出的问题, 也没有考虑, 代码只作为测试运算结果的对与否. 如果坚持要格式输出的话也可以考虑加入相应代码. 欢迎大家测试4楼和10楼代码的运算缺陷... [ Last edited by pengfei on 2006-10-6 at 10:16 ] |
|
| 第38楼 不得不爱 | 发表于 2006-10-06 19:29 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
就是我把4楼上面的代码(输入是%1和%2的那个文件)写入A.BAT文件里,然后在CMD里输入:
a 008.64 36.6 无效数字。数字常数只能是十进制(17),十六位进制(0x11)或 八进制(021)。 .70 请按任意键继续 . . . a 8.64 36.6 44.70 |
|
| 第39楼 pengfei | 发表于 2006-10-06 19:42 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
呵呵~ 我那段代码只限于在批处理中运算, 不能接受变量%1, %2的输入. 版主应该一看就知道.
恭喜你的代码已经加入取位循环去零法和小数位前添1运算代码, 解决了这一系列问题. 还增加了在CMD下使用的代码^_^ 目前第4楼, 第10楼, 以及qwe1234567版主的代码测试一切正常... |
|
| 第40楼 不得不爱 | 发表于 2006-10-06 23:34 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
那请问4楼上的里的%1和%2是接受哪儿的变量?(下面的代码是你4楼上面的,请看!)
里的%1和%2是接受哪儿的变量? |
|
| 第41楼 pengfei | 发表于 2006-10-06 23:35 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
这一段脚本是最初的, 很多问题都没解决, 4楼下面还有一段呢?
|
|
| 第42楼 不得不爱 | 发表于 2006-10-07 03:08 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
4楼下面那段是没有问题!
|
|
| 第43楼 不得不爱 | 发表于 2006-10-08 00:13 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
新思路计算方法:
计算前小数位首位自动去0、尾数自动去0,整数首位自动去0,最大的得数是:2147483647.2147483647(小数位最大得数是.2147483647、整数最大得数是.2147483647) 如果加数的小数位首位都有N个以上的0,小数位的位数可以多到N+9个以上! 欢迎大家测试! 321.00000000065496546+13.000000000046541346=334.000000000701506806 321.1105496546+13.1041541346=334.2147037892 [ Last edited by qwe1234567 on 2006-10-8 at 05:20 ] |
|
| 第44楼 pengfei | 发表于 2006-10-08 04:47 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
看了一下版主的代码有两点改进:
1. 在读取两个运算数的整数小数部分时, 你放到一起的方法提取. 思路不错^_^ 2. 小数部分首位为零就去零运算. (这里小数部分前置零是不影响运算的, 这点和整数运算一样) 这段代码虽然发现小数运算暂时没有出错, 但却不能运算整数了(原因在于去小数最前位零, 如果只有一个零就没有运算数了. 甚至以后的几句代码都会出错).这里个问题倒可以解决. 以前觉得小数前全部添1简单省事, 但却只能运算8位. 呵呵~ 还是觉得更大的运算范围更重要, 代码正在更新中... |
|
| 第45楼 不得不爱 | 发表于 2006-10-08 05:22 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
去小数最前位零, 如果只有一个零就没有运算数了. 甚至以后的几句代码都会出错的问题已经解决。更新在43楼。
欢迎大家测试! |
|
| 上一页 1 2 3 4 5 6 … 10 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |