xinhui-Calculator
介绍:
等式表达式解析,不等式表达式解析,与或非逻辑运算表达式解析;支持带参数的表达式解析; 支持带函数的表达式解析
- 支持 +、-、*、/、%、&&、||、!、>、<、>=、<=、==、!=、^(幂)、(、) 运算符
- 支持有参数的代数等式不等式计算,参数以$+变量名 方式
- 支持三目运算 例如:a>b?a:b
- 支持sin(), cos(), log(), max(), min(), datetime(), date(), time() 函数
- 可自行扩展其他支持
函数说明:
- sin() 三角函数
- cos() 三角函数
- log() 自然数底数的对数值
- max() 返回多个参数中最大值的一个值
- min() 返回多个参数中最小的一个值
- datetime() 返回当前时间戳的秒数
- date() 返回当前日期的天数
- time() 返回当前时间的秒数
- 可自行灵活扩展函数的各种形式支持
设计说明:
采用ASCII字符串方式进行表达式的解析,栈方式处理,遵循常规的运算优先级,实现了争对字符串的加减乘除等运算规则。运算错误或者不合理,错误的无法运算的表达式统一返回结果NaN。提供静态调用方法conversion()。
使用说明示例:
//java版本调用方式
String result = Calculator.conversion("1+2*3");
System.out.println("表达式:1+2*3 = " + result);
//C语言版本调用方式
char expression[128], result[56] = {'\0'};
strcpy(expression, "1+2*3");
conversion(expression, result);
printf(" 表达式:1+2*3 = %s \n", result);
测试用例运行打印结果:
等式表达式: (0*1--3)-18/-18-(3*(-3.1)) = 13.3 320/(10^2) = 3.2 不等式表达式: 1+8<=7 ==> false true&&false ==> false !false==false ==> false !(!false) ==> false !(1+9<=8) ==> true 1+9<=8&&2>0 ==> false 1+9<=8||2>0 ==> true 带参数的代数表达式和不等式: $P1+100+$P2/2 = 1650.0 ($Ib-$Ia)/$Ia>=0.1||$Ia-$Ib>=1||$Ia-$Ic>=1 ==> true 三元运算表达式: 1<2?1:(1+2) ==> 1 $Ib>$Ia?$Ib:$Ia ==> 5 支持函数的表达式: $max($Ib,$Ia,$Ic)-$min($Ib,$Ia,$Ic) = 3.0 $time() ==> 1649927681925 $log(2)==0.6931471805599453 ==> true $log($Ic)==0.6931471805599453 ==> true
实现了java和C语言的两个不同版本,他们的实现逻辑原理用法完全一致,完整代码转到以下地址
java版跳转
表达式解析引擎(支持等式表达式,不等式表达式,与或非逻辑运算表达式,支持带参数和带函数的表达式解析)_java逻辑表达式解析-Java文档类资源-CSDN文库
C语言版本跳转
表达式解析引擎(支持等式表达式,不等式表达式,与或非逻辑运算表达式,支持带参数和带函数的表达式解析),可以在电脑,单片及上运行_表达式解析引擎,逻辑表达式引擎-单片机文档类资源-CSDN文库