MathExpressionParser - библиотека для парсинга математических выражений.
MathExpressionParser для .netstandard2.1
var parser = MathParserBuilder.BuildDefaultParser();
var output = parser.Parse("2 + 2 * 2"); // 6
- + - сложение
- - - вычитание
- / - деление
- * - умножение
- ^ - возведение в степень
- // - деление нацело
- % - деление с остатком
- ( ) - изменение приоритета операций
some_func(arg1, arg2, arg3, ...)
Все функции не чувствительны к регистру, можно писать как max(...), так и MAX(...) и т.д.
pi
e
max
min
Все константы не чувствительны к регистру, можно писать как pi, так и PI и т.д.
42069
- десятичное число0xFBF
- шестнадцатеричное число0o453
- восьмеричное число0b101
- двоичное число
pi
- число пиe
- число emax
- максимальное значение числаdouble
(1.7976931348623157E+308)min
- минимальное значение числаdouble
(-1.7976931348623157E+308)
- sin(x) - синус числа x
- cos(x) - косинус числа x
- tg(x) - тангенс числа x
- ctg(x) - котангенс числа x
- arcsin(x) - арксинус числа x
- arccos(x) - арккосинус числа x
- arctg(x) - арктангенс числа x
- arcctg(x) - арккотангенс числа x
- pow(x, y) - число x возведенное в степень y
- asb(x) - модуль числа x
- sqrt(x) - квадратный корень числа x
- log(x, y) - логарифм числа x по основанию y
- lg(x) - десятичный логарифм числа x
- ln(x) - натуральный логарифм числа x
- exp(x) - экспонента числа x
- sign(x) - возвращает знак числа (-1 если число меньше 0, 1 если больше 0, 0 если число равно 0)
- d2r(x) - переводит число x в градусах в радианы
- r2d(x) - переводит число x в радианах в градусы
- max(x, y, ...) - возвращает максимальное число из x, y и т.д. (функция принимает 2 или больше аргументов)
- min(x, y, ...) - возвращает минимальное число из x, y и т.д. (функция принимает 2 или больше аргументов)
- avg(x, y, ...) - возвращает среднее число из x, y и т.д. (функция принимает 2 или больше аргументов)
var parser = MathParserBuilder
.Create()
.Build();
var parser = MathParserBuilder
.Create()
.WithDefaultConstants()
.WithDefaultFunctions()
.Build();
Запись выше эквивалента данной записи
var parser = MathParserBuilder.BuildDefaultParser()
var parser = MathParserBuilder
.Create()
.WithConstant("my_const", 54)
.WithFunction("my_func", 2, args => (args[0] + args[1]) / 2) // кол-ко аргументов строго 2
.WithFunction("my_func1", argsCount => argsCount >= 3, args => args.Average() / 2) // кол-ко аргументов больше или равно 3
.Build();
Пример консольного приложения - TestProject.
var parser = MathParserBuilder.BuildDefaultParser()
var output = parser.Parse("pow(2 + 2 * 2 - sqrt(2) / cos(max(pi / 2, pi)), 2)") // 54.97
Этот проект лицензирован MIT.