数学表达式解析工具
数学表达式解析工具
数学表达式解析就是写程序计算出一套数学表达式的结果.诸如:a+b*c / (d -d)之类的公式.这牵扯到一些编译原理的东西.代码写起来有点麻烦,但只要耐心点总能搞定的.工具使用很简单,输入数学表达式的字符串,可以设置x, y, z三个参数值,按运算按钮或回车键,输出运算结果.
下载地址:
https://files.cnblogs.com/WhyEngine/MathExpression.7z
(1)标准运算符
支持+,-,*,/,%,^这6种标准运算符,其中:
%为求余运算, a%b 相当于 mod(a, b);
^为求幂运算, a^b 相当于 pow(a, b);
(2)括号标志符
支持{}, [], ()这三类括号标志符,括号必需成对出现.支持最大32级括号的嵌套.如:
(2+(-2+(5.0*(9 + ((1+2)*3))/3) + 2))
-{exp[sqrt(abs[sin{rand(100)}])]}
(3)支持函数形式的运算符
运算符的函数名必需为小写字母.具体说明如下:
单目运算操作:
positive(a) // 相当于 +a
negative(a) // 相当于 -a
abs(a)
floor(a)
ceil(a)
sign(a)
sqrt(a) // a为负时,会得到无效的数值
exp(a) // a过大时,会得到无效的数值
log(a) // a为负时,会得到无效的数值
log2(a) // a为负时,会得到无效的数值
log10(a) // a为负时,会得到无效的数值
sin(a)
cos(a)
tan(a)
asin(a)
acos(a)
atan(a)
rand(a) // 生成一个0到a的随机数
双目运算操作:
add(a, b)
sub(a, b)
multiply(a, b)
divide(a, b)
max(a, b)
min(a, b)
mod(a, b)
pow(a, b) // 很容易得到无效的数值
atan2(a, b)
rand2(a, b) // 生成一个a到b的随机数
三目运算操作:
lerp(a, b, r) // 插值
clamp(v, hi, low) // 限定值的范围
gray(r, g, b) // 颜色灰度化处理
add3(a, b, c)
average3(a, b, c)
四目运算操作:
add4(a, b, c, d)
average4(a, b, c, d)
(4)常量值
有两个常量值
PI 3.1415927
E 2.7182818
常量名必需为大写字母,如(PI + E)或 sin(PI*0.5)
(5)数值解析
对整数的解析支持2,8,10,16四种进制
0X开头为16进制, XABCDEF大小写都可以, 如0xffff
0Y开头为2进制, Y大小写都可以, 如0y10101010000
0开头为8进制, 如07523, 注意出现了"08"之类的分失败
默认为10进制
(6)可以设置XYZ三个参数, XYZ大小写都可以.
如(X + y + z)
(7)提供几个测试用的数学表达式字符串:
log(E) * PI +6 + lerp(1.0, 100.0, PI) + average4(x, y, z, 100) / 5 - 300 + gray(120, 620, 30)
PI + 1*3.0 + 6 + (1 + 2 * 3*(x+y)) -28.141594 + sqrt(2) + abs(-2) + mod(2, 3) + 2^(sqrt(5)) - 10.125327
写了之后没有做太多测试,有计算错误的表达式,请联系我.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?