找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29206|回复: 11

[原创] [20171031更新]一行VBS代码构造强力计算器!

[复制链接]
发表于 2017-3-23 12:23:52 | 显示全部楼层 |阅读模式
本帖最后由 老刘1号 于 2017-11-1 12:37 编辑

老刘原创,如有雷同,纯属巧合
  1. EXECUTE "MSGBOX ""结果:"" & "&INPUTBOX("输入算式:")
复制代码
  1. MsgBox "结果:" & Eval(InputBox("输入算式:"))
复制代码
2017-10-31补充了各种函数及其返回值,基本照抄微软参考文档
角度转弧度:
弧度=(Pi/180)*角度

可用函数:
Abs(number) '绝对值
Sgn(number)
如果 number 为|Sgn 返回
大于零              |1
等于零              |0
小于零              |-1
Sin(number) '正弦(弧度)
Cos(number)'余切(弧度)
Tan(number)'正切(弧度)
Atn(number) '反正切
利用 Atn 来计算 pi 的值:
Dim pi
pi = 4 * Atn(1)   ' 计算 pi 的值。

Sqr(number) ‘返回平方根
Log(Number) '返回数值的自然对数(e)。
Exp(number) '返回 e(自然对数的底)的幂次方。

函数 派生的等效公式
Secant(正割) Sec(X) = 1 / Cos(X)
Cosecant(余割) Cosec(X) = 1 / Sin(X)
Cotangent(余切) Cotan(X) = 1 / Tan(X)
Inverse Sine(反正弦) Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Inverse Cosine(反余弦) Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Inverse Secant(反正割) Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) -1) * (2 * Atn(1))
Inverse Cosecant(反余割) Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))
Inverse Cotangent(反余切) Arccotan(X) = Atn(X) + 2 * Atn(1)
Hyperbolic Sine(双曲正弦) HSin(X) = (Exp(X) - Exp(-X)) / 2  
Hyperbolic Cosine(双曲余弦) HCos(X) = (Exp(X) + Exp(-X)) / 2
Hyperbolic Tangent(双曲正切) HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))
Hyperbolic Secant(双曲正割) HSec(X) = 2 / (Exp(X) + Exp(-X))
Hyperbolic Cosecant(双曲余割) HCosec(X) = 2 / (Exp(X) - Exp(-X))
Hyperbolic Cotangent(双曲余切) HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
Inverse Hyperbolic Sine(反双曲正弦) HArcsin(X) = Log(X + Sqr(X * X + 1))
Inverse Hyperbolic Cosine(反双曲余弦) HArccos(X) = Log(X + Sqr(X * X - 1))
Inverse Hyperbolic Tangent(反双曲正切) HArctan(X) = Log((1 + X) / (1 - X)) / 2
Inverse Hyperbolic Secant(反双曲正割) HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
Inverse Hyperbolic Cosecant(反双曲余割) HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) +1) / X)
Inverse Hyperbolic Cotangent(反双曲余切) HArccotan(X) = Log((X + 1) / (X - 1)) / 2
以 N 为底的对数 LogN(X) = Log(X) / Log(N)

评分

参与人数 4技术 +4 收起 理由
a2002 + 1 我顶
610100 + 1 谢谢
taofan712 + 1 Old Lau would never disappointed us!
happy886rr + 1 嗯,学习了。

查看全部评分

发表于 2017-3-24 01:39:06 | 显示全部楼层
厉害。谢谢分享!
发表于 2017-3-24 08:17:51 | 显示全部楼层
  1. a=inputbox("输入:")
  2. execute "a="&a
  3. msgbox a
复制代码
更直观点
 楼主| 发表于 2017-3-24 12:08:38 | 显示全部楼层
回复 3# Nsqs


    嗯,多费一个变量,不过可读性高了
 楼主| 发表于 2017-3-24 12:20:49 | 显示全部楼层
本帖最后由 老刘1号 于 2017-7-27 09:20 编辑

再附一个批处理调用版(灵感来自于PCL斑竹的一段代码):
放到批处理文件末尾即可。

  1. GOTO :EOF
  2. :CALC
  3. for /f %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%~1)"^)(close^)') do Echo.%%a
复制代码
用法:
  1. Call :Calc 1+1-1+666-999 %计算前面一堆的结果%
  2. Call :Calc 2^^10 %计算2的10次方%
  3. Call :Calc 1024^^0.1 %计算1024的0.1次方%
  4. Call :Calc 1.665544332211111111111111111123-0.55443322110000000000000012 %计算浮点数加减%
  5. Call :Calc (9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9*9.9)^^(1/15) %计算浮点数相乘除,幂运算%
复制代码
返回可以用FOR收集

评分

参与人数 1技术 +1 收起 理由
taofan712 + 1 老刘出品,必属精品!

查看全部评分

发表于 2017-3-24 12:39:52 | 显示全部楼层
回复 1# 老刘1号


    顶老刘 赞老刘
发表于 2017-3-24 12:49:50 | 显示全部楼层
很久以前,用的 eval,结合 cscript 放在终端环境里。
  1. set inp=wscript.stdin
  2. set put=wscript.stdout

  3. put.writeline "input exit to exit"
  4. while true
  5.         put.write "Test:"
  6.         yousay = inp.readline

  7.         if yousay="exit" then
  8.                 wscript.quit
  9.         end if

  10.         x=eval(yousay)
  11.         put.writeline "x=" & x
  12. wend
复制代码
eval.bat
cscript //nologo "%~dp0eval.vbs"

计算公式后用 x 指代上一次的结果。

后来发现 python 交互挺好,没怎么用了。

评分

参与人数 1技术 +1 收起 理由
老刘1号 + 1 学习了

查看全部评分

发表于 2017-7-26 19:44:15 | 显示全部楼层
一旦算式里有什么问题或者...
发表于 2017-7-26 20:02:22 | 显示全部楼层
回复 8# 0000


    这只是一行代码,不需要钻牛角尖
发表于 2017-7-26 20:17:40 | 显示全部楼层
不过这个三角函数计算的是弧度而不是角度...
 楼主| 发表于 2017-7-26 23:27:09 | 显示全部楼层
本帖最后由 老刘1号 于 2017-7-26 23:29 编辑

回复 10# a2002


    确实是弧度
补充:
角度转弧度:
弧度=(Pi/180)*角度
Pi≈3.1415926535898
发表于 2017-7-26 23:42:17 | 显示全部楼层
技术超限了,回头顶你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:20 , Processed in 0.018685 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表