10楼代码已更新, 可以去最高位的多个零. 请测试...
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
精华I
查看 41,022 回复 136
| 评分人 | 分数 | 时间 |
|---|---|---|
| — | +6 | 2006-10-20 20:19 |
无奈何发表于 2006-10-04 18:56
- @echo off
- setlocal
- set number1=%~1
- set number2=%~2
- if "%number1%" == "" goto :EOF
- if "%number2%" == "" set number2=0
- set D1=0
- set D2=0
- set flag=0
- set D1=%number1:*.=%
- call set I1=%%number1:.%D1%=%%
- set D2=%number2:*.=%
- call set I2=%%number2:.%D2%=%%
- if "%D1%" == "%number1%" set D1=0
- if "%D2%" == "%number2%" set D2=0
- set D1=1%D1%
- set D2=1%D2%
- call :fill %D1% %D2% D1 D2
- call :sum $%D1% $%D2%
- if "%sum:~0,1%" GTR "2" set /a flag=1
- set D_sum=%sum:~1%
- call :sum $%I1% $%I2%
- set I_sum=%sum%
- echo %number1% + %number2% =
- if %D_sum% EQU 0 (
- echo. %I_sum%
- ) else (
- echo. %I_sum%.%D_sum%
- )
- goto :EOF
- :sum
- set sum=
- set temp1=%1
- set temp2=%2
- if "%flag%" == "1" set H=1
- set n=1
- :next
- call set x=%%temp1:~-%n%,1%%
- call set y=%%temp2:~-%n%,1%%
- if "%x%" == "$" (
- if "%y%" == "$" (
- if "%H%" GTR "0" set sum=%H%%sum%
- goto :EOF
- ))
- if "%x%" == "$" set x=0
- if "%y%" == "$" set y=0
- call :sub %x% %y% %H%
- set sum=%ERRORLEVEL%%sum%
- set /a n+=1
- goto next
- :sub
- set H=0
- if "%1" == "" exit /b 0
- if "%2" == "" exit /b %1
- if "%3" == "" call :sub %1 %2 0 &goto :EOF
- set /a s=%1 + %2 + %3
- set H=%s:~0,-1%
- set L=%s:~-1%
- exit /b %L%
- goto :EOF
- :fill
- setlocal
- set n=-1
- set temp1=%1
- set temp2=%2
- :loop
- set /a n+=1
- call set x=%%temp1:~%n%,1%%
- call set y=%%temp2:~%n%,1%%
- if "%x%" == "" (
- if "%y%" == "" (
- endlocal &set %3=%temp1% &set %4=%temp2%
- goto :EOF
- ))
- if "%x%" == "" set temp1=%temp1%0
- if "%y%" == "" set temp2=%temp2%0
- goto :loop
- goto :EOF
call sum %RANDOM%
call sum %RANDOM% %RANDOM%
call sum .%RANDOM% %RANDOM%
call sum %RANDOM% .%RANDOM%
call sum %RANDOM%.%RANDOM% %RANDOM%
call sum %RANDOM% %RANDOM%.%RANDOM%
call sum %RANDOM%.%RANDOM% %RANDOM%.%RANDOM%
call sum %RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM% %RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%%RANDOM%
pause
Originally posted by pengfei at 2006-10-4 23:50:
解决了小数点后第一位为0且后面出现8或9, 导致数值为无效数字的问题.
一个全新的算法, 大概的意思是, 读取小数位数不足的补零. 去.号后小数和整 ...
| 评分人 | 分数 | 时间 |
|---|---|---|
| xycoordinate | +1 | 2007-03-04 23:16 |
整数浮点数分段运算代码: (代码请见4楼)
整数位最多可运算9位数, 小数位最多可运算8位数.
小数位整数位加起来最多可运算17位数.
否则会溢出或为无效数字...
整数浮点数合并运算代码: (代码请见10楼)
整数位最多可运算8位数, 小数位最多可运算8位数.
小数位整数位加起来最多可运算9位数
否则会溢出或为无效数字...