Seite 1 von 1

Punktrechnung vor Strichrechnung

Verfasst: Montag 20. Juli 2026, 23:10
von lackschuh
ggf. kann mir ein Mathe-Profi helfen :D

Hatte gerade eine Diskussion über die Punktrechnung vor Strichrechnung der "Python Console" und Windows Taschenrechner.

Folgende zwei Beispiele:

20/4*5

oder

6/3*2

Ist es jetzt richtig (war meine Annahme) von links nach rechts. Also 20/4*5=25 oder 20/(4*5)=1
Die Python Console wie auch der Win Rechner sagen 25. Mein Kontrahent sagt 1.

Wer von uns hat nun recht? Wohl mein Kollege oder?

Gruss und Dank

Re: Punktrechnung vor Strichrechnung

Verfasst: Dienstag 21. Juli 2026, 05:30
von Sirius3
Mit Strich ist + und − gemeint und nicht geteilt durch, dad ja im deutschsprachigen Raum als : geschrieben wird. Und dann wird von links nach rechts gerechnet. (20:4)∙5
Beim Bruchstrich kann man dagegen denken, dass ²⁰∕₄.₅ gemeint wäre, das muß aber graphisch deutlich gemacht werden, wie weit der Bruchstrich reicht.

Re: Punktrechnung vor Strichrechnung

Verfasst: Dienstag 21. Juli 2026, 08:36
von Kebap
Division und Multiplikation sind gleichwertig, dann wird von links nach rechts gerechnet. Welches Gegenargument bringt dein Kontrahent?

Re: Punktrechnung vor Strichrechnung

Verfasst: Dienstag 21. Juli 2026, 10:08
von lackschuh
Sirius3 hat recht. Hatte völlig vergessen zu erwähnen, dass es u.a. um "modernere" Taschenrechner geht, die Brüche "rechnen" können. So ein TI 30 spuckt mit der Eingabe über a b/c "25 " aus und nicht 1, was gemäss meinem Kollegen richtig wäre.

Re: Punktrechnung vor Strichrechnung

Verfasst: Dienstag 21. Juli 2026, 11:49
von sparrow
@lackschuh: Verstehe ich nicht. Welcher "unmoderne" Taschenrechner gibt da denn 1 aus?!?

Re: Punktrechnung vor Strichrechnung

Verfasst: Dienstag 21. Juli 2026, 23:27
von __blackjack__
@lackschuh: Wenn das für den Kollegen ein Fall von „Punkt vor Strichrechnung“ ist, dann hat der wohl komische Ansichten von Mathematik. 🙄

Wenn das als 20/4*5 geschrieben ist, dann wäre das sehr ungewöhnlich wenn die Multiplikation zuerst gerechnet werden würde. Das müsste man dann schon mit Klammern schreiben, also 20/(4*5), oder eben zweidimensional klar machen, was gemeint ist:

Code: Alles auswählen

 20
───── = 1
4 ⋅ 5
Mein C64 gibt bei PRINT 20/4*5 auch 25 aus, also wie unmodern müssen wir werden? 😀

Re: Punktrechnung vor Strichrechnung

Verfasst: Mittwoch 22. Juli 2026, 07:14
von DeaD_EyE
Diese Prioritäten gelten:
  • Klammern werden von innen nach außen berechnet.
  • Potenzen kommen vor Multiplikation und Division.
  • Multiplikation und Division haben die gleiche Priorität und werden von links nach rechts ausgeführt.
  • Addition und Subtraktion haben ebenfalls die gleiche Priorität und werden von links nach rechts ausgeführt.

Re: Punktrechnung vor Strichrechnung

Verfasst: Mittwoch 22. Juli 2026, 13:34
von __blackjack__
Ergänzend, wo Du Potenzen ins Spiel bringst, die werden von rechts nach links ausgewertet:

Code: Alles auswählen

>>> 2**3**4
2417851639229258349412352
Das Unterscheidet sich dann beim C64:

Code: Alles auswählen

PRINT 2↑3↑4
 4096

READY.

Re: Punktrechnung vor Strichrechnung

Verfasst: Donnerstag 23. Juli 2026, 16:59
von DeaD_EyE
__blackjack__ hat geschrieben: Mittwoch 22. Juli 2026, 13:34 Ergänzend, wo Du Potenzen ins Spiel bringst, die werden von rechts nach links ausgewertet:
Mathematisch gesehen ist das sogar richtig. Da wird auch von rechts nach links potenziert. Da Guido Mathematiker ist, kann man von ausgehen, dass die Reihenfolge der Operatoren mathematisch korrekt sind.

https://docs.python.org/3/reference/exp ... precedence

Re: Punktrechnung vor Strichrechnung

Verfasst: Mittwoch 12. August 2026, 11:04
von lackschuh
Die Taschenrechner App auf meinem Android Handy und Python machen aus -2**4 -4. Ein Taschenrechner mit einer x² Funktionstaste macht hingegen richtigerweise 4.
Da muss man aufpassen.

Kann mir jedem einfacher erklären, was in der Doku mit:
The power operator ** binds less tightly than an arithmetic or bitwise unary operator on its right, that is, 2**-1 is 0.5.
gemeint ist bzw. was ein "unary operator" ist und ggf. auch das deutsche Wort dafür?

Danke

Re: Punktrechnung vor Strichrechnung

Verfasst: Mittwoch 12. August 2026, 12:05
von DeaD_EyE
ChatGPT sagt (ohne Kontext zu Python):

Potenzierung ** → 2**4 = 16
Negation - vor der Potenz → -(16) = -16
Subtraktion - 4 → -16 - 4 = -20

--
Und das sagt der Disassembler von Python:

Code: Alles auswählen

>>> import dis
...
...
... def func(a, b, c):
...     return a ** b - c
...
...
... print(dis.dis(func))
...
  4           RESUME                   0

  5           LOAD_FAST_BORROW_LOAD_FAST_BORROW 1 (a, b)
              BINARY_OP                8 (**)
              LOAD_FAST_BORROW         2 (c)
              BINARY_OP               10 (-)
              RETURN_VALUE
The power operator ** binds less tightly than an arithmetic or bitwise unary operator on its right, that is, 2**-1 is 0.5.
Ein unärer Operator ist ein Werkzeug in der Mathematik und Informatik, das nur einen einzigen Wert (einen Operanden) benötigt, um eine Veränderung oder Prüfung durchzuführen.
Unäres Plus (+): Behält den Vorzeichenwert bei (z. B. +5 bleibt 5).
Unäres Minus (-): Kehrt das Vorzeichen um (z. B. -5 wird zu -5, aus -(-3) wird 3).
Logisches NOT (not): Dreht einen Wahrheitswert um (not True wird zu False, not False wird zu True).
Bitweises NOT (~): Invertiert alle Bits einer Ganzzahl. Die mathematische Formel hierfür lautet -(x + 1).

Code: Alles auswählen

>>> import dis
...
...
... def func(a, b):
...     return a ** -b
...
...
... print(dis.dis(func))
...
  4           RESUME                   0

  5           LOAD_FAST_BORROW_LOAD_FAST_BORROW 1 (a, b)
              UNARY_NEGATIVE
              BINARY_OP                8 (**)
              RETURN_VALUE

Re: Punktrechnung vor Strichrechnung

Verfasst: Donnerstag 13. August 2026, 07:45
von Dennis89
lackschuh hat geschrieben: Mittwoch 12. August 2026, 11:04 Die Taschenrechner App auf meinem Android Handy und Python machen aus -2**4 -4. Ein Taschenrechner mit einer x² Funktionstaste macht hingegen richtigerweise 4.
Da muss man aufpassen.
Ich gehe davon aus du meintest -2**2 == -4? Das ist auch korrekt. 4 als Ergebnis ist nur korrekt, wenn du die Rechnung so ausdrückst: (-2)**2 == 4. Dass ist auch das was DeaD_EyE zeigte. Erst wird die Potenz ausgewertet, dann das Vorzeichen (unärer Operator), wenn man keine Klammer verwendet.

Re: Punktrechnung vor Strichrechnung

Verfasst: Donnerstag 13. August 2026, 10:03
von Kebap
Ja, beide (unterschiedliche) Antworten sind richtig.
Dein Taschenrechner antwortet nicht als einziger "richtigerweise", sondern du stellst ihm eine andere Frage.

Re: Punktrechnung vor Strichrechnung

Verfasst: Freitag 14. August 2026, 16:05
von __blackjack__
Der C64 sieht das auch wie Python und diverse Taschenrechner:

Code: Alles auswählen

PRINT -2↑2,(-2)↑2
-4            4