Pakete, Repositories und App-Kategorien suchen

Paketdetailsv1.2.0

eval_ex

Ein mathematischer und boolescher Ausdruckevaluator, portiert von https://github.com/uklimaschewski/EvalEx.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
3460
Likes
27
Pub-Punkte
145

Paket installieren

flutter pub add eval_ex

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

EvalEx ist ein leichtgewichtiger Dart-Paket, der mathematische und boolesche Ausdrücke zur Laufzeit auswertet. Er unterstützt grundlegende Arithmetik, Klammern, Variablen und gängige Funktionen wie sin, cos und log. Ursprünglich aus einer JavaScript-Bibliothek übernommen, bietet er eine einfache API zum sicheren Parsen und Berechnen von Ausdrücken. Ideal für Anwendungen, die dynamische Formelberechnungen erfordern, beispielsweise Rechner, Finanztools oder konfigurationsbasierte Logik. Das Paket läuft auf allen wichtigen Plattformen, einschließlich Mobilgeräte, Web und Desktop.

Anwendungsfälle

  • Dynamische Formelberechnung
  • Rechner-Apps
  • Konfigurationsbasierte Logik
  • Finanzmodellierung
  • Datenvalidierung
  • wissenschaftliche Berechnungen

Hauptmerkmale

  • Unterstützt arithmetische und boolesche Ausdrücke
  • Variablenersetzung
  • Eingebaute mathematische Funktionen
  • Sichere Ausdrucksparsing
  • Plattformübergreifende Kompatibilität
  • Einfache API mit minimalem Setup

Geeignet für

  • Entwickler, die Rechner erstellen
  • Anwendungen, die eine Auswertung von Ausdrücken zur Laufzeit benötigen
  • Lernhilfsmittel
  • Backend-Logik mit benutzerdefinierten Formeln
  • Prototyping dynamischer Berechnungen

Hinweise

  • Nicht geeignet für hochkomplexe oder leistungskritische Mathematik
  • Keine Unterstützung für benutzerdefinierte Funktionsdefinitionen
  • Ausdrücke müssen syntaktisch gültig sein
  • Beschränkt auf grundlegende Operationen und Standardfunktionen
  • Sicherheitswarnung bei unvertrauenswürdiger Eingabe

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

eval_ex

A Dart port of https://github.com/uklimaschewski/EvalEx.
EvalEx supports mathematical and boolean expression evaluation, using arbitrary precision. EvalEx supports functions, variables, and operators and additionally makes it very easy to add your own custom functions or operators.

EvalEx uses decimal to support arbitrary precision arithmetic.
View package on pub.dev.

Basic example

void main() {
  Expression exp = Expression("2 ^ 4 + 8");
  print(exp.eval().toString()); // 24

  // With a variable
  exp = Expression("a ^ b + c");
  // Variables may contain alphanumeric characters, and "_". This can be changed
  // by using setVariableCharacters(..) and setFirstVariableCharacters(..) (what chars variable are allowed to start with).
  exp.setStringVariable("a", "2");
  exp.setStringVariable("b", "4");
  exp.setStringVariable("c", "8");
  print(exp.eval().toString()); // 24
  
  // With a function
  exp = Expression("MAX(-7,8)");
  print(exp.eval().toString()); // 8

  // Boolean logic
  exp = Expression("1>0 && 5 == 5");
  print(exp.eval().toString()); // 1
  
  exp = Expression("1>0 && 5 == 4");
  print(exp.eval().toString()); // 0
}
 

Built-in functions and operators

Function Description
+ Addition
- Subtraction
* Multiplication
/ Division
% Modulus
^ Power
&& Returns 1 if both expressions are true, 0 otherwise
|| Returns 1 if either or both expressions are true, 0 otherwise
> Returns 1 if the left expression is greater than the right
>= Returns 1 if the left expression is greater than or equal to the right
< Returns 1 if the right expression is greater than the left
<= Returns 1 if the right expression is greater than or equal to the left
= Returns 1 if the left and right expressions are equal
== Returns 1 if the left and right expressions are equal
!= Returns 1 if the left and right expressions are NOT equal
<> Returns 1 if the left and right expressions are NOT equal
STREQ("str1","str2") Returns 1 if the literal "str1" is equal to "str2", otherwise returns 0
FACT(int) Computes the factorial of arg1
NOT(expression) Returns 1 if arg1 evaluates to 0, otherwise returns 0
IF(cond,exp1,exp2) Returns exp1 if cond evaluates to 1, otherwise returns exp2
Random() Returns a random decimal between 0 and 1
SINR(exp) Evaluates the SIN of exp, assuming exp is in radians
COSR(exp) Evaluates the COS of exp, assuming exp is in radians
TANR(exp) Evaluates the TAN of exp, assuming exp is in radians
COTR(exp) Evaluates the COT of exp, assuming exp is in radians
SECR(exp) Evaluates the SEC of exp, assuming exp is in radians
CSCR(exp) Evaluates the CSC of exp, assuming exp is in radians
SIN(exp) Evaluates the SIN of exp, assuming exp is in degrees
COS(exp) Evaluates the COS of exp, assuming exp is in degrees
TAN(exp) Evaluates the TAN of exp, assuming exp is in degrees
COT(exp) Evaluates the COT of exp, assuming exp is in degrees
SEC(exp) Evaluates the SEC of exp, assuming exp is in degrees
CSC(exp) Evaluates the CSC of exp, assuming exp is in degrees
ASINR(exp) Evaluates the ARCSIN of exp, assuming exp is in radians
ACOSR(exp) Evaluates the ARCCOS of exp, assuming exp is in radians
ATANR(exp) Evaluates the ARCTAN of exp, assuming exp is in radians
ACOTR(exp) Evaluates the ARCCOT of exp, assuming exp is in radians
ATAN2R(exp1, exp1) Evaluates the ARCTAN between exp1 and exp2, assuming exp1 and exp2 are in radians
ASIN(exp) Evaluates the ARCSIN of exp, assuming exp is in degrees
ACOS(exp) Evaluates the ARCCOS of exp, assuming exp is in degrees
ATAN(exp) Evaluates the ARCTAN of exp, assuming exp is in degrees
ACOT(exp) Evaluates the ARCCOT of exp, assuming exp is in degrees
ATAN2(exp1, exp1) Evaluates the ARCTAN between exp1 and exp2, assuming exp1 and exp2 are in degrees
RAD(deg) Converts deg to radians
DEG(rad) Converts rad to degrees
MAX(a,b,...) Returns the maximum value from the provided list of 1 or more expressions
MIN(a,b,...) Returns the minimum value from the provided list of 1 or more expressions
ABS(exp) Returns the absolute value of exp
LOG(exp) Returns the natural logarithm of exp
LOG10(exp) Returns the log base 10 of exp
ROUND(exp,precision) Returns exp rounded to precision decimal points
FLOOR(exp) Returns the floor of exp
CEILING(exp) Returns the ceiling of exp
SQRT(exp) Computes the square root of exp
e Euler's number
PI Ratio of circle's circumference to diameter
NULL Alias for null
TRUE or true Alias for 1
FALSE or false Alias for 0

Adding custom functions, operators, and variables

Custom functions, operators, and variables can be defined by adding them in built_ins.dart

Differences from https://github.com/uklimaschewski/EvalEx.

  • Hyperbolic functions aren't supported
  • The SQRT function is currently limited to 64-bit precision
  • Built in operators/functions/variables are instead defined in built_ins.dart

Kategorien

Abhängigkeiten

Abhängigkeiten 2 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.