所以我在尝试使用十进制值设置mXparser Argument时遇到问题。
public void SetArguments(List<decimal> argumentsValues)
{
_x = new List<Argument>();
var argsNumber = argumentsValues.Count;
for (int i = 1; i < argsNumber + 1; i++)
_x.Add(new Argument("x" + i + "=" + argumentsValues[i-1]));
if (argsNumber == 1)
{
_expression = new Expression(_base, f, _x[0]);
}
if(argsNumber==2)
{
_expression = new Expression(_base, f, _x[0], _x[1]);
以下是我的功能示例。 _x [0]显示为0另一个是当我计算表达式并尝试将结果转换为十进制时,我得到OverflowException(因为我试图将NaN转换为十进制)。我真的需要将float值传递给函数参数。
答案 0 :(得分:1)
固定。这是改变
_x.Add(new Argument("x" + i + "=" + argumentsValues[i-1]));
要
_x.Add(new Argument("x" + i, argumentsValues[i-1]));
答案 1 :(得分:0)
你试图使用&#34;自然语言&#34;构造函数,即
Argument x = new Argument("x = 5");
Argument x = new Argument("x = 2*2 + sin(pi/2)");
非常方便,但需要额外的解析,并且在您拥有参数名称和参数值时不是最佳的。更优化(性能和一些特殊情况)
Argument x = new Argument("x", 5);
请参阅API规范中给出的Argument构造函数列表 http://mathparser.org/api/org/mariuszgromada/math/mxparser/Argument.html
并查看与用户定义的参数相关的教程部分 http://mathparser.org/mxparser-tutorial/user-defined-arguments/
您将看到不同的参数类型(包括依赖参数)+不同构造函数的使用。
祝你好运