标题: 开平方(精度为小数点后5位)
[打印本页]
作者: dreamseed
时间: 2008-4-5 16:51
标题: 开平方(精度为小数点后5位)
算法思路由 terse 提出。本人扩大了可行域。
@echo off
set /p n=输入待开方数(0~89999999):
set a=2
:acr
set /a a=(n/a+a)/2,b=a*a
if %b% gtr %n% goto :acr
if %b% lss 0 goto acr
if %b% equ %n% goto :ok
set /a t=n-b,k=a
:loop1
set /a t*=100,x=k*20,m=10
:loop2
set /a m-=1,s=m*(m+x)
if %s% gtr %t% goto loop2
set /a t-=s,c+=1,k=k*10+m,r=r*10+m
if %c% lss 5 goto loop1
:ok
if not "%r%" == "" set a=%a%.%r%
echo 结果:%a%
pause>nul
[
Last edited by dreamseed on 2008-4-5 at 05:13 PM ]
作者: PPdos
时间: 2008-4-5 17:08
标题: set /?
Quote: |
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
- 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符 |
|
利用逻辑运算符
作者: dreamseed
时间: 2008-4-5 17:12
能具体写一个么?
作者: plp626
时间: 2008-4-5 18:04
批处理搞数学计算尤其是小树 ,还真没研究过,
这样的帖子就当娱乐,可以作为一个小函数备用,
研究下算法
---------------------------
纯计算数学的问题,主要是迭代公式:Xn+1=(Xn+A/Xn)/2 极限----->A^(1/2)
楼主初始时把X1设为2,然后在:acr模块迭代计算A^(1/2)的整数部分,
if %b% lss 0 goto acr不是多余的,用来防止溢出为负数,我疏忽了
另外将X1设为n/2可以减少迭代次数,
后面计算小数,谁分析下,我没耐心了
[
Last edited by plp626 on 2008-4-5 at 06:46 PM ]
作者: xtanbmy
时间: 2008-4-7 19:02
下一个看一下,谢谢。