标题: [数值计算] 如何用 set /a 开根号? [打印本页]
作者: mkl 时间: 2008-8-19 17:40 标题: 如何用 set /a 开根号?
用 set /a 可以计算 + - * / 等,但如何用它计算代根号的数呢?
请教
作者: Batcher 时间: 2008-8-19 17:45
转帖- @echo off
- set a=2
- set/p p=请输入需要开平方的数字(0~321063之间)
- set/p w=请输入精确到小数点后几位
- :lp
- set /a a=(p/a+a)/2,n=a*a,y=p-n
- set r=%a%
- if %n% gtr %p% goto lp
- if %n% equ %p% goto ok
- :lp1
- set/a b+=1,m=0,x=r*20,y*=100
- :lp2
- set/a m+=1,s=(x+m)*m
- if %s% gtr %y% goto lp3
- goto lp2
- :lp3
- set/a m-=1,s=(x+m)*m,y-=s
- set r=%r%%m%&set t=%t%%m%
- if %w% equ %b% goto ok
- goto lp1
- :ok
- if not "%t%" == "" set a=%a%.%t%
- echo %p%开平方结果: %a%
- pause>nul
- goto :eof
复制代码
作者: terse 时间: 2008-8-20 00:05
最早代码是计算到321063 后梦想添加 判断if %n% lss 0 goto lp 可以扩大到89999999- @echo off
- set a=2
- set/p p=请输入需要开平方的数字(0~89999999之间)
- set/p w=请输入精确到小数点后几位(9以内)
- :lp
- set /a a=(p/a+a)/2,n=a*a,r=a,y=p-n
- if %n% lss 0 goto lp
- if %n% gtr %p% goto lp
- if %n% equ %p% goto ok
- if "%w%"=="" goto ok
- set/a m=10,x=r*20,y*=100,b+=1
- :lp1
- set/a m-=1,s=(x+m)*m
- if %s% gtr %y% goto lp1
- if %w% neq 0 set/a y-=s,r=r*10+m,t=t*10+m,m=10,x=r*20,y*=100,w-=1&goto lp1
- :ok
- if not "%t%" == "" set a=%a%.%t%
- echo %p%开平方结果: %a%
- pause>nul
复制代码
作者: mkl 时间: 2008-8-22 18:24
原帖由 Batcher 于 2008/8/19 17:45 发表
转帖@echo off
set a=2
set/p p=请输入需要开平方的数字(0~321063之间)
set/p w=请输入精确到小数点后几位
:lp
set /a a=(p/a+a)/2,n=a*a,y=p-n
set r=%a%
if %n% gtr %p% goto lp
if %n% equ %p% goto ok
...
好像有些错误,例如开 2 精确到小数点后6位 ;开 4 精确到小数点后6位
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |