- ·上一篇文章:创建服务的批处理
- ·下一篇文章:批处理文字游戏
- ·百度中搜索更多的关于“批处理写的大数的 加法 乘法 计算器”相关内容
- ·谷歌中搜索更多的关于“批处理写的大数的 加法 乘法 计算器”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
批处理写的大数的 加法 乘法 计算器
大数的 加法 乘法 计算器
可以计算连小数位数一起的200位的加法,和乘法.
代码很臃肿,是一步一步完成的.没心思简化了....
初步测试成功....但不保证不在某种情况下出错....欢迎指出...
@echo off&title DOS资源站 www.cmdos.net
:: 乘法,加法,计算器,可计算小数
:: by 小楼一夜听春雨
:toud
cls
setlocal EnableDelayedExpansion
echo.&echo 目前只能计算 加法和乘法,可以计算超大数,和小数.
echo.&echo 加,减,乘,除,的表示方法分别是 + - x /
echo.&echo 输入方法 如: 1234567891212+65465831657654
echo.
set /p suru=请输入:
set suru=%suru: =%
for /f "tokens=1,2 delims=+-x/" %%a in ("%suru%") do (
set sstt1=%%a
set sstt2=%%b
)
call set pand=%%suru:%sstt1%=%%
call :lis !sstt1! _yw _ddd
call :lis !sstt2! _er _yyy
set _num1=!sstt1:.=!
set _num2=!sstt2:.=!
set _jb=0&set _dierg=0
if !_ddd! gtr !_yyy! (set /a _jb=_ddd-_yyy&set _dierg=2&set _jxs=!_ddd!) else set _jxs=!_yyy!
if !_ddd! lss !_yyy! set /a _jb=_yyy-_ddd&set _dierg=1
for /l %%y in (1 1 !_jb!) do set _jbo=!_jbo!0
if !_dierg! equ 0 set _jia11=!_num1!&set _jia22=!_num2!
if !_dierg! equ 2 set _jia22=!_num2!!_jbo!&set _jia11=!_num1!
if !_dierg! equ 1 set _jia11=!_num1!!_jbo!&set _jia22=!_num2!
set /a _ddd=_ddd+_yyy
if "%pand:~0,1%"=="+" call :kai !_jia11! !_jia22!
if !_yw! lss !_er! (
set _xia=!_num1!&set _sang=!_num2!
set _duo=!_er!&set _sao=!_yw!
) else (
set _xia=!_num2!&set _sang=!_num1!
set _duo=!_yw!&set _sao=!_er!
)
:: 计算乘法
set _jin=0&set _he=0
for /l %%a in (1 1 !_duo!) do (
set _var1=!_sang:~-%%a,1!
for /l %%b in (1 1 !_sao!) do (
set _var2=!_xia:~-%%b,1!
set /a _ji=!_var1!*!_var2!
set /a _ji=_jin+_ji
set _ji=0!_ji!
set _jin=!_ji:~-2,1!
set _abc=!_ji:~-1!!_abc!
)
:: 处理积
if !_abc! lss 1 set _abc=0
if !_jin! neq 0 set _abc=!_jin!!_abc!
set _lin=0!_lin!
set _abc=!_abc!!_lin!
set _abc=!_abc:~0,-1!
call :kai !_he! !_abc!
set _abc=&set _jin=0
)
goto jiajia
:: 将积相加
:kai
set __jie=
set __num1=%1&set __num2=%2
for /l %%i in (1 1 200) do (
set __str1=0!__num1!
set __str2=0!__num2!
)
set __str1=!__str1:~-200!&set __str2=!__str2:~-200!
set __jin=0
for /l %%i in (-1 -1 -200) do (
set /a __a=!__str1:~%%i,1!+!__str2:~%%i,1!+!__jin!
set __jie=!__a:~-1!!__jie!
set __a=0!__a!
set __jin=!__a:~-2,1!
)
for /f "tokens=* delims=0" %%i in ("!__jie!") do set _he=%%i
if "%pand:~0,1%"=="+" goto jiajia
goto :eof
:lis
:: 判断位数.
set _w=%1
set _dian=
for /l %%a in (0 1 200) do if not "!_w:~%%a,1!"=="" set /a %2+=1
for /f "tokens=2 delims=." %%a in ("%1") do set _dian=%%a
set _dddian=!_dddian!!_dian!
if not "!_dian!"=="" (
set /a %2-=1
for /l %%a in (0 1 50) do if not "!_dian:~%%a,1!"=="" set /a %3+=1
)
goto :eof
:: 显示结果
:jiajia
cls&echo.
for /l %%a in (1 1 10) do set _qian=!_qian!0
set _he=!_qian!!_he!
if "%pand:~0,1%"=="+" set _ddd=!_jxs!
call set _zh=%%_he:~0,-!_ddd!%%
call set _hou=%%_he:~-!_ddd!%%
if not "!_dddian!"=="" set _he=!_zh!.!_hou!
for /f "tokens=* delims=0" %%i in ("!_he!") do set _he=%%i
if "!_he:~0,1!"=="." set _he=0!_he!
:_zonjie
if not "!_dddian!"=="" (
if "!_he:~-1!"=="0" set _he=!_he:~0,-1!&goto _zonjie
if "!_he:~-1!"=="." set _he=!_he:~0,-1!
)
echo !sstt1!
echo %pand:~0,1% !sstt2!
echo = !_he!
for /f "tokens= 1delims=_=" %%z in ('set _') do set _%%z=&set __%%z=
echo.&pause
goto toud

