练练手。基本思路是化小数为整数运算,得到结果后再恢复成小数。
不支持大数字运算。特别是乘法部分有待完善,需要考虑的成分的确太多了。可能有批漏之处 | @echo off&setlocal enabledelayedexpansion | | :begin | | set /p m=输入(q退出): | | if "!m!"=="q" goto :eof | | set /p n=输入: | | for /f "tokens=1,2 delims=." %%i in ("%m%") do set m1=%%j00&if not "%%j"=="" (set mm=%%i!m1:~0,2!) else set mm=%%i00 | | for /f "tokens=1,2 delims=." %%i in ("%n%") do set n1=%%j00&if not "%%j"=="" (set nn=%%i!n1:~0,2!) else set nn=%%i00 | | | | if "!mm:~0,1!"=="-" (set mm=!mm:~1!&set /a num=2!mm!-1!mm!,mm=1!mm!-num&set mm=-!mm!) else set /a num=2!mm!-1!mm!,mm=1!mm!-num | | if "!nn:~0,1!"=="-" (set nn=!nn:~1!&set /a num=2!nn!-1!nn!,nn=1!nn!-num&set nn=-!nn!) else set /a num=2!nn!-1!nn!,nn=1!nn!-num | | | | set /a add=mm+nn | | call :check !add! num1 | | echo 两值之和是: !num1! | | | | set /a sub=mm-nn | | call :check !sub! num2 | | echo 两值之差是: !num2! | | | | | | set /a mul=mm*nn | | if !mul! lss 100 (set num3=0.00) else ( | | set mul=!mul:~0,-2! | | call :check !mul! num3 | | ) | | echo 其积为:!num3! | | | | set /a div=100*mm/nn | | call :check !div! num4 | | echo 其商为:%num4% | | | | goto begin | | | | :check | | set var=%1&set "_=" | | if !var! lss 0 (set /a var=-1*var&set _=-) | | if !var! lss 10 (set var=00!var!) else if !var! lss 100 set var=0!var! | | if "!var:~-2!"=="00" (set var=!var:~0,-2!) else if "!var:~-1!"=="0" (set var=!var:~0,-2!.!var:~-2,1!) else set var=!var:~0,-2!.!var:~-2! | | set %2=!_!!var!&goto :eofCOPY |
|