中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]批处理计算出错。 上一主题 | 下一主题
yiyepianzhou
初级用户





积分 138
发帖 47
注册 2007-10-13
状态 离线
『楼 主』:  [求助]批处理计算出错。

我写了一个从1加到任意正数的批处理,代码如下:
@echo off
title 1到大于0的一定数相加
setlocal EnableDelayedExpansion
set /p n=输入下限:
for /l %%b in (1,1,!n!) do set /a c=c+%%b
echo !c!
pause
输入的数如果太大就要算错
比如输入487546
结果就是-1407279457
为什么错了?

2007-10-21 19:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

有数据范围……

4字节
-2^31~2^31-1
-2147483648~2147483647

2007-10-21 19:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yiyepianzhou
初级用户





积分 138
发帖 47
注册 2007-10-13
状态 离线
『第 3 楼』:  

应该怎么写?

2007-10-22 17:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  

搜搜以前的老贴子,有计算任何位数的脚本。

2007-10-22 17:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yiyepianzhou
初级用户





积分 138
发帖 47
注册 2007-10-13
状态 离线
『第 5 楼』:  

谢谢

2007-10-22 23:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 6 楼』:  



  Quote:

  1. @echo off &SetLocal EnableDelayedExpansion
  2. set /p x=请输入被除数:
  3. set /p y=请输入除数:
  4. set /p n=请输入欲保留的小数的位数:
  5. set /a count=0
  6. set /a bjsh=10
  7. :loop
  8. if %count% geq %n% goto start
  9. set /a bjsh*=10
  10. set /a count+=1
  11. goto loop
  12. :start
  13. set /a rest=%x%*%bjsh%/%y%-%x%*%bjsh%/10/%y%*10
  14. if "%n%"=="0" (set /a last=%x%/%y%) else (
  15. set /a last=%x%*%bjsh%/10/%y%-%x%*%bjsh%/100/%y%*10
  16. )
  17. if %rest% geq 5 set /a last+=1
  18. if "%n%"=="0" echo 结果为%last% & pause & goto exit
  19. set /a result=%x%/%y%
  20. set result=%result%.
  21. set /a end=%n%-1
  22. set /a bjsh=10
  23. for /l %%i in (1,1,%end%) do (
  24. set /a add=%x%*!bjsh!/%y%-%x%*!bjsh!/10/%y%*10
  25. set result=!result!!add!
  26. set /a bjsh*=10
  27. )
  28. set result=%result%%last%
  29. echo 结果为%result% & pause
  30. :exit
         BJSH发表于:  2007-10-24  13:07

研究研究这段代码 对你有帮助

http://www.cn-dos.net/forum/sear ... =yes&sid=nYpctP

[ Last edited by bjsh on 2007-10-24 at 01:20 PM ]

2007-10-24 13:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wanqiming
新手上路





积分 14
发帖 6
注册 2008-2-8
状态 离线
『第 7 楼』:  df

dg

2008-2-16 21:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: