如何在MathNet.Symbolics评估函数中设置双精度?

时间:2016-03-02 08:51:48

标签: c# mathdotnet mathdotnet-symbolics

我有一个Dictionary<string, double> values,值精度对我来说非常重要。我有一个字符串公式,Infix可以解析。我想知道如何做这样的事情:

var expr = Infix.ParseOrThrow(m.Formula);
var result = Evaluate.Evaluate<double>(values, expr);

以双精度得到结果?

1 个答案:

答案 0 :(得分:1)

Evaluate对自定义FloatingPoint类型进行操作,该类型可以表示各种双精度浮点值(主要是实数或复数,理论上也是向量或矩阵)。您可以将double投射到FloatingPoint,然后使用RealValueFloatingPoint获得双倍回传。

示例:

var variables = new Dictionary<string,FloatingPoint>
   {{ "a", 2.0 },
    { "b", 3.0 }};

var expr = Infix.ParseOrThrow("2/3*a");
double result = Evaluate.Evaluate(variables, expr).RealValue;