[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] [分享]批处理对分数进行约分计算

&&由于很多原因,本人很久没有在论坛发过贴了,今天在群上和八字讨论了一下批对分数的计算,于是写下下面这个对分数进行约分的小批:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p a=请输入分数的分子:
  3. set /p b=请输入分数的分母:
  4. if %a% leq %b% (set /a c=a) else (set /a c=b)
  5. cls&echo 原分数为:%a%^/%b%
  6. for /l %%a in (%c%,-1,2) do (
  7.     set /a x=!a! %% %%a,y=!b! %% %%a
  8.     if !x! equ 0 if !y! equ 0 set /a a/=%%a,b/=%%a
  9. )
  10. echo 约分后为:%a%^/%b%
  11. pause>nul
复制代码

[ 本帖最后由 batman 于 2009-7-31 11:27 编辑 ]
***共同提高***

小白提问:
1. set /a x=!a!  %%  %%a,y=!b!  %%  %%a 中,中间的那对%%是起什么作用啊?
2.  if !x! equ 0 if !y! equ 0 set /a a/=%%a,b/=%%a 可以两个if这样写吗,这样写看来是“或”的意思?

TOP

原帖由 phanphan 于 2010-6-8 13:33 发表
小白提问:
1. set /a x=!a!  %%  %%a,y=!b!  %%  %%a 中,中间的那对%%是起什么作用啊?
2.  if !x! equ 0 if !y! equ 0 set /a a/=%%a,b/=%%a 可以两个if这样写吗,这样写看来是“或”的意思?

1,求余(取模)运算符
2,与,和。


推荐楼主使用数学算法来约分,这样效率更高:
  1. @echo off
  2. set/p a=请输入分数的分子:
  3. set/p b=请输入分数的分母:
  4. cls&echo.原分数为:%a%/%b%
  5. if %a% equ %b% set han=1&goto:han
  6. if %a% gtr %b% (set ye=%a%&set gu=%b%) else set ye=%b%&set gu=%a%
  7. :ye
  8. set/a xing=ye%%gu
  9. if %xing%==0 (set/a a/=gu,b/=gu) else set ye=%gu%&set gu=%xing%&goto:ye
  10. set han=%a%/%b%
  11. :han
  12. echo.约分后为:%han%&pause>nul
复制代码

[ 本帖最后由 hanyeguxing 于 2010-6-8 16:02 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 1楼 的帖子

报告,8字应该是本顿。名字旁弄个(8888) 模仿极品qq号……

TOP

返回列表