Как установить двойную точность в функции оценки MathNet.Symbolics?

У меня есть Dictionary<string, double> values и для меня важна точность. У меня есть строковая формула, которую Infix может разобрать. Интересно, как сделать что-то вроде этого:

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

получить результат с двойной точностью?

1 ответ

Решение

Оценка работает на заказ FloatingPoint тип, который может представлять различные значения с плавающей точкой двойной точности (в основном действительные или комплексные числа, в теории также векторы или матрицы). Вы можете сыграть double к FloatingPointи использовать RealValue чтобы получить двойную отдачу от FloatingPoint,

Пример:

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;
Другие вопросы по тегам