介绍 |
数学表达式解析小工具,功能很简单,使用者输入一个数学表达式的字符串,软件就会输出一个结果值,例如可以设置x、y、z三个参数值,按运算按钮或回车键,输出运算结果。 比起系统自带的计算器来,它能够很方便的显示表达式,还算是挺好用的一个小工具吧 !数学表达式解析算法,使用的是分制递归,效率还算不错。
特点
(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
|