Werkzeuge
Leitfäden

Ausdrucksrechner

Leben

Arithmetischen Ausdruck sicher auswerten mit + − × ÷ % ^ und Klammern. Kein eval, keine Codeausführung.

100 % clientseitig Ohne Backend
Unterstützt + − * / % ^ und (). Enter zum Auswerten.
Ergebnis —
Auf dieser Seite

Was ist das für ein Rechner?#

Es ist ein schlichter arithmetischer Rechner, der einen mathematischen Ausdruck auswertet, den Sie als Text eingeben — (12 * 1.08) + 7 oder 2^10 % 256 — und Ihnen die Zahl liefert. Es gibt keine Funktions-Tasten zum Abtippen; Sie schreiben den ganzen Ausdruck und drücken eine Taste.

Der wichtige Teil ist, wie er gebaut ist. Die meisten schnellen Rechner im Web schummeln, indem sie Ihre Zeichenkette an JavaScripts eval() übergeben, das jeden Code ausführt — in Ordnung für ein Spielzeug, hässlich, sobald jemand etwas Pfiffiges einfügt. Dieser hier tut das nicht: Er führt einen handgeschriebenen Recursive-Descent-Parser aus, der nur Zahlen, Klammern und die Operatoren + - * / % ^ akzeptiert. Alles außerhalb dieser Grammatik wird sofort abgelehnt. Das Ergebnis ist ein Rechner, der wirklich keinen Code ausführen kann, was genau der Grund ist, warum er sicher zum Einfügen ist.

Verwendung#

  1. Tippen Sie Ihren Ausdruck in das Feld Eingabe. Leerzeichen werden ignoriert, also sind 1+2 und 1 + 2 dasselbe.
  2. Operatoren: + - * / für die vier Grundrechenarten, % für Modulo (den Rest), ^ für Potenz. Klammern ( ) gruppieren. Unäres Minus funktioniert, also ist -5 + 3 gleich -2.
  3. Dezimalzahlen und wissenschaftliche Notation sind in Ordnung: 0.5, 1e3 (was 1000 ist), 2.5e-2.
  4. Klicken Sie auf Auswerten (oder drücken Sie Enter). Die Ergebnis-Zeile zeigt die Zahl oder eine Inline-Nachricht, die das Problem nennt — Division durch Null, Unerwartetes Zeichen, Klammern unausgeglichen und so weiter —, sodass Sie den Ausdruck reparieren können, statt zu raten, was schiefgegangen ist.
  5. Binärer Gleitkomma-Staub wird automatisch entfernt, sodass 0.1 + 0.2 als 0.3 angezeigt wird, nicht als 0.30000000000000004.

Hauptfunktionen#

  • Kein eval, kein new Function, keine Bezeichner. Nur Zahlen und sieben Operator-Zeichen werden akzeptiert — eine vollständig begrenzte Grammatik, keine beliebige Codeausführung.
  • Korrekte Operator-Priorität (PEMDAS): Klammern, dann ^, dann * / %, dann + -.
  • Rechts-assoziative Potenz. 2^3^2 wertet so aus, wie Mathematiker es schreiben (siehe das ausführliche Beispiel).
  • Wissenschaftliche Notation (6.022e23) und Modulo (17 % 5) für echtes Überschlags-Rechnen.
  • Freundliche, spezifische Fehler, die das Versagen nennen (Division durch Null, unvollständiger Ausdruck, ungültige Zahl) mit der fraglichen Position, statt eines stillen NaN.

Ausführliches Beispiel#

Drei Ausdrücke, die jeweils ein anderes Verhalten zeigen. Fügen Sie sie nacheinander ein.

Operator-Priorität und Gruppierung.

(1 + 2) * 3 ^ 2

Ergebnis: 27. Die Klammern erzwingen zuerst 1 + 2 = 3; dann wird 3 ^ 2 vor der Multiplikation ausgewertet (Potenz bindet stärker als *), was 9 ergibt; schließlich 3 * 9 = 27. Ohne die Klammern wäre 1 + 2 * 3 ^ 2 gleich 1 + 18 = 19.

Rechts-assoziative Potenz.

2 ^ 3 ^ 2

Ergebnis: 512, nicht 64. Potenz assoziiert nach rechts, also ist das 2 ^ (3 ^ 2) = 2 ^ 9 = 512. Wenn Sie eigentlich (2 ^ 3) ^ 2 = 64 wollten, schreiben Sie die Klammern.

Binär-Staub entfernt.

0.1 + 0.2

Ergebnis: 0.3. Die rohe binäre Gleitkomma-Summe ist 0.30000000000000004; der Formatierer rundet sie auf eine vernünftige Anzahl signifikanter Stellen zurück, sodass die Antwort so liest, wie ein Mensch es erwartet.

FAQ#

Warum kann ich sin, log, sqrt oder pi nicht verwenden?#

Weil das Bezeichner sind und Bezeichner absichtlich nicht Teil der Grammatik sind. Jeder Name wird als Unerwartetes Zeichen abgelehnt — das ist die Zeile, die den Rechner davon abhält, jemals Code auszuführen. Wenn Sie sqrt(16) brauchen, schreiben Sie es als 16 ^ 0.5 um; für log und sin verwenden Sie einen wissenschaftlichen Rechner.

Ergibt 2^3^2 512 oder 64?#

512. Der Operator ^ ist rechts-assoziativ, was der Konvention in der Mathematik und beim Potenz-Operator der meisten Programmiersprachen entspricht. 2^3^2 parst als 2^(3^2). Um 64 zu erhalten, schreiben Sie (2^3)^2.

Was tut der Operator % hier?#

Er ist Modulo — der Rest nach Ganzzahldivision — nicht „Prozent“. 17 % 5 ist 2, weil 17 geteilt durch 5 den Rest 2 lässt. Er ist praktisch für „Ist diese Zahl gerade?“ (n % 2), für das Einwickeln von Werten in einen Bereich oder für Uhren-Arithmetik. Er hat dieselbe Priorität wie * und /.

Wird mein Ausdruck an einen Server gesendet?#

Nein. Parsing und Auswertung passieren vollständig in Ihrem Browser mit einem handgeschriebenen Parser — es gibt kein Backend, und die Eingabe verlässt nie die Seite.