本文共 777 字,大约阅读时间需要 2 分钟。
我们在开发过程中会遇到可配置的数学表达式计算时,通过计算公式库(muparser),快速和简单地解析数学表达式及进行计算。
代码示例:
#include <string> //计算公式库 #include "muParser.h"using namespace mu;
std::string expr = "800*(a/b)";//表达式 std::string arg01="a";//参数名1,与表达式一致 std::string arg02="b";//参数名2,与表达式一致 int main(int argc, char **argv) { try{ Parser p; //实际数据 double *_dval = new double[2]; _dval[0]=30; _dval[1]=40; //将参数与值(实际数据)映射 p.DefineVar(arg01, &_dval[0]); p.DefineVar(arg02, &_dval[1]); //设置数学表达式 p.SetExpr(expr); //计算 double r_val = static_cast<double>(p.Eval()); printf("expr[%s],r_val=%f\n",expr.c_str(),r_val); }catch (Parser::exception_type &e) { std::cout << e.GetMsg() << std::endl; } getchar(); return 0; };实际使用中将数学表达式及参数名从配置文件读入,或者从脚本文件读取数学表达式、参数名、实际值,达到实时按需计算
代码用到的公式库:http://download.csdn.net/download/py8105/9802277
转载地址:http://kzaal.baihongyu.com/