Как установить двойную точность в функции оценки 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;