中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 21:47
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用cmd做四舍五入运算? 查看 1,027 回复 5
楼 主 如何用cmd做四舍五入运算? 发表于 2007-04-01 12:42 ·  中国 广东 深圳 电信
中级用户
★★
积分 379
发帖 95
注册 2003-07-17 00:00
23年会员
UID 7038
性别 男
状态 离线
可以做到吗?
2 发表于 2007-04-01 22:55 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
可以
3 发表于 2007-04-01 22:55 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
把你的要求再具体一下;

比如举个例子上来;试试帮你写写代码
4 发表于 2007-04-02 02:40 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
试试这个吧



  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-04-01 13:30
5 发表于 2007-04-02 02:46 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
哎。bjsh兄

楼主只是需要四舍五入。
你写那么多。有用么?
知,不觉多。不知,乃求知
6 发表于 2007-04-02 03:01 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
呵呵
那倒是;
我只是顺手从发在你楼里的代码复制过来了
论坛跳转: