使用Qt Script实现多项式计算
在测试系统开发过程中遇到需要对测试结果进行多项式运算的需求,如测试结果为 R1
、R2
...Rn
而最终结果需要导出如 Max(R1,R2)+Abs(R3)-Min(R4)
这种,并且计算多项式为用户指定。
使用Qt Script可以很方便的实现这个需求,首先使用js脚本实现多项式计算中所需的内置函数
function Max(x,y){
return (x>y)?x:y;
}
function Min(x,y){
return (x<y)?x:y;
}
function Abs(x){
return (x<0)?(-1*x):x;
}
然后可通过
// 若要添加内置函数,可通过修改 MyScript.js 文件实现
QFile file(":/MyScript.js");
if(file.open(QIODevice::ReadOnly|QIODevice::Text))
{
m_strScript = file.readAll();
file.close();
}
// 替换多项式中的 X1~Xn Abs(X1) --> Abs(-10)
QString strEqution = m_qsEqution;
QMap<QString, double>::iterator iter = dDataMap.begin();
while (iter != dDataMap.end())
{
strEqution = strEqution.replace(iter.key(), QString::number(iter.value()));
iter++;
}
// 多项式前添加函数定义
QString jsText = m_strScript + strEqution;
// 使用js引擎,计算多项式结果
QScriptEngine scriptEngin;
if(scriptEngin.canEvaluate(jsText))
{
QScriptValue scripVal = scriptEngin.evaluate(jsText).toString();
m_dResult = scripVal.toNumber();
m_bPass = ((m_dResult > m_rgdLimit[0])&&(m_dResult < m_rgdLimit[1]));
}
else
{
m_bPass = false;
return false;
}
作者: mr-xbt
本文来自博客园: https://www.cnblogs.com/xbotao/p/16057640.html
如有问题,请留言或者Email我: upc_xbt 163.com