标题: [数值计算] [已解决]批处理怎样计算三角函数asin和sqrt? [打印本页]
作者: hkxinghu 时间: 2010-11-6 09:03 标题: [已解决]批处理怎样计算三角函数asin和sqrt?
求助,批处理计算三角函数 主要能计算这两个就行 asin反正弦 SQRT平方根
[ 本帖最后由 hkxinghu 于 2010-11-27 08:53 编辑 ]
作者: hkxinghu 时间: 2010-11-6 10:12
自己顶起 求高手回复啊
作者: qq106942397 时间: 2010-11-6 10:20
asin反正弦 SQRT平方根
是P高手不一定是数学高手呀
作者: vsbat 时间: 2010-11-6 10:26
Impossible
批处理 连小数运算 都不支持-- 更不要说 反正弦 了 ---
作者: hkxinghu 时间: 2010-11-6 14:25
小数运算批处理可以解决啊 希望高手能把这个也给解决掉
作者: broly 时间: 2010-11-6 15:26
粗略的写了一个。原理就在那里,如果你想要达到更具体的目的,自己修改
- @echo off
- :begin
- set/p num=请输入你的角度或者反函数值:
- if %num% leq 1 (call :sub2 %num%) else (call :sub1 %num%)
- goto begin
-
- :sub1
- mshta vbscript:msgbox("sin(%1)="^&sin(%1*3.14159/180)^&chr(13)^&chr(10)^&"cos(%1)="^&cos(%1*3.14159/180))(window.close)
- goto :eof
- :sub2
- mshta vbscript:msgbox("ArcSin(%1)="^&atn(%1/Sqr(1-%1*%1))*180/3.14159)(window.close)
复制代码
作者: Skyfengluo 时间: 2010-11-7 10:56
原帖由 broly 于 2010-11-6 15:26 发表
粗略的写了一个。原理就在那里,如果你想要达到更具体的目的,自己修改
@echo off
:begin
set/p num=请输入你的角度或者反函数值:
if %num% leq 1 (call :sub2 %num%) else (call :sub1 %num%)
goto begin
...
厉害啊。。。不但要对数学理解,还要对DOS深度的理解啊。。。。
作者: hkxinghu 时间: 2010-11-7 11:42 标题: 回复 6楼 的帖子
谢谢高手帮忙 这样计算的结果不能引用吧 我还想在下面的算式中引用这个结果怎么弄啊 还有这是算asin反正弦 还是 SQRT平方根的啊 请指点
作者: broly 时间: 2010-11-7 12:48
这样实现调用结果很麻烦的,还不如直接写一个vbs,而不是批处理
作者: broly 时间: 2010-11-7 12:49
那个是反正弦
作者: hkxinghu 时间: 2010-11-7 13:25 标题: 回复 9楼 的帖子
写VBS能实现也可以的 期待。。。。。。。。。
作者: broly 时间: 2010-11-7 20:26 标题: 回复 11楼 的帖子
你现在是要写批处理还是VBS?写VBS得到的结果,只能在VBS下运用
作者: hkxinghu 时间: 2010-11-7 21:38
想写批处理啊 能引用结果的批处理 要是批处理不能实现 VBS也行 批处理不是能调用VBS吗 不能引用他的结果吗
作者: broly 时间: 2010-11-8 10:03 标题: 回复 13楼 的帖子
好吧,给你写一个类似第三方软件的VBS。
作者: broly 时间: 2010-11-8 10:54
这个VBS保存为calc.vbs,与批处理放一起- dim i,objArgs
- set objArgs = Wscript.Arguments
- if objArgs(0) <> "." then
- Wscript.echo "sin("& objArgs(0) & ")=" & sin(objArgs(0)*3.14159/180)
- Wscript.echo "cos("& objArgs(0) & ")=" & cos(objArgs(0)*3.14159/180)
- Wscript.echo "tan("& objArgs(0) & ")=" & tan(objArgs(0)*3.14159/180)
- end if
- if objArgs(1) <> "." then
- Wscript.echo "ArcSin("& objArgs(1) & ")=" & atn(objArgs(1)/Sqr(1-objArgs(1)*objArgs(1)))*180/3.14159
- end if
- if objArgs(2) <> "." then
- Wscript.echo "Sqr(" & objArgs(2) & ")=" & Sqr(objArgs(2))
- end if
复制代码
在命令行下的用法:
cscript.exe calc.vbs 角度值 反函数值 开根值
如- cscript.exe calc.vbs 30 0.5 25
复制代码
不求的请用 . 代替。如- cscript.exe calc.vbs 30 0.5 .
复制代码
下面是我写的一个样本批处理,你可以参照修改:- @echo off
- echo 输入你的角度和反函数值和求方根的值:
- echo 用空格隔开,不求的请用 . 代替。如 30 0.5 25或者 30 . 25
- :begin
- set /p input=输入:
- for /f "tokens=1-3 delims= " %%a in ("%input%") do (
- for /f "skip=2 delims=" %%i in ('cscript.exe calc.vbs %%a %%b %%c') do (
- echo %%i
- )
- )
- pause>nul&echo\&goto begin
复制代码
[ 本帖最后由 broly 于 2010-11-8 10:56 编辑 ]
作者: hkxinghu 时间: 2010-11-12 21:46
谢谢 辛苦了
作者: defanive 时间: 2010-11-13 04:31
- '&echo off&cls 2>nul 3>nul
- '&set /p n=Input:
- '&for /f %%a in ('cscript /e:vbs /nologo "%~f0" %n%') do set r=%%a
- '&echo The Square Root Of %n% Is %r%
- '&pause
- wscript.echo sqr(wscript.arguments(0))
复制代码
作者: batman 时间: 2010-11-26 01:07
偶然中翻到此贴,个人觉得可以利用批+excel的函数来解决这一问题
作者: batman 时间: 2010-11-26 09:10 标题: 如下示例(保留两位小数):
- @echo off
- set /p str=请输入要计算的正弦值:
- echo =round^(sin^(radians^(%str%^)^),2^)>temp.xls
- start temp.xls
复制代码
作者: hkxinghu 时间: 2010-11-27 09:30 标题: 回复 15楼 的帖子
谢谢 这个VBS加批处理很好的计算平方根和反正弦 这两个结果我再下面的计算中还需要引用 怎么引用啊 能不能 set /p 反正弦=ArcSin %反正弦% 因为我还要对这个计算结果进行加减乘除运算 请指点谢谢
作者: broly 时间: 2010-11-27 20:23 标题: 回复 20楼 的帖子
这个是可以显示结果的批处理。我给你注释一下
- @echo off
- echo 输入你的角度和反函数值和求方根的值:
- echo 用空格隔开,不求的请用 . 代替。如 30 0.5 25或者 30 . 25
- :begin
- set /p input=输入:
- for /f "tokens=1-3 delims= " %%a in ("%input%") do (
- rem 下面这个for 是调用VBS 进行计算
- for /f "skip=2 delims=" %%i in ('cscript.exe calc.vbs %%a %%b %%c') do (
- rem 这个就是显示结果的命令。用echo 把计算的结果显示出来。
- rem 如果你需要调用结果,那个你可以进行变量的赋值。
- rem 比如可以把变量赋值给t : set t=%%i
- rem 这样下面就可以用%t%进行计算了。
- rem 这个只是一个举例,你可以根据自己的需求进行修改。
- echo %%i
- )
- )
- pause>nul&echo\&goto begin
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |