Problem mit Exponenten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

hallo hab ne kurze frage:
wieso kommt bei den beiden folgenden sachen net das selbe raus?

Code: Alles auswählen

>>> 5**5**5
1911012597945477520356404559703964..........................(gekürzt)
>>> (5**5)**5
298023223876953125L
und wenn ja, wie kann man das machen, dass automatisch bei 5**5**5 das selbe wie bei (5**5)**5 rauskommt?

mfg
LP640

Edit (Leonidas): Zeilenumbrüche eingefügt.
Zuletzt geändert von LP640 am Montag 26. Oktober 2009, 06:18, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

LP640 hat geschrieben:wieso kommt bei den beiden folgenden sachen net das selbe raus?
Weil ``5**5**5`` das gleiche wie ``5**(5**5)`` ist und eben nicht das gleiche wie ``(5**5)**5``.
LP640 hat geschrieben:und wenn ja, wie kann man das machen, dass automatisch bei 5**5**5 das selbe wie bei (5**5)**5 rauskommt?
Klammern setzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Weil der Parser das anders parst:

Code: Alles auswählen

In [1]: import ast

In [2]: exp = ast.parse('5**5**5')

In [3]: ast.dump(exp)
Out[3]: 'Module(body=[Expr(value=BinOp(left=Num(n=5), op=Pow(), right=BinOp(left
=Num(n=5), op=Pow(), right=Num(n=5))))])'

In [4]: exp = ast.parse('(5**5)**5')

In [5]: ast.dump(exp)
Out[5]: 'Module(body=[Expr(value=BinOp(left=BinOp(left=Num(n=5), op=Pow(), right
=Num(n=5)), op=Pow(), right=Num(n=5)))])'
Und falls du den nicht unbedingt umschreiben willst, sehe ich keine andere Möglichkeit um das zu ändern.
(Ich gehe mal davon aus, dass dir klar ist, warum da mathematisch gesehen zwei verschiedene Zahlen heraus kommen ;) )

Edit: Bitte kürze mal die lange Zahl, das verunstaltet ja völlig das Forum... :evil:
Edit2: Danke Leonidas ;)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Und weil es mathematisch so korrekt ist ... :wink:
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

hallo

dass 5**5**5 = 5**(5**5) ist und nicht (5**5)**5, darauf bin ich später auch noch gekommen.
ich hab mich nur gewundert, da mein taschenrechner bei 5^5^5 genau umgekehrt rechent, also (5^5)^5.

mfg
LP640
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

LP640 hat geschrieben:ich hab mich nur gewundert, da mein taschenrechner bei 5^5^5 genau umgekehrt rechent, also (5^5)^5.
Wenn es kein programmierbarer Taschenrechner ist, dann kannst du das ja nur nacheinander eingeben:

Code: Alles auswählen

5^5    (3125)
^5     (298023223876953125)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

LP640 hat geschrieben:ich hab mich nur gewundert, da mein taschenrechner bei 5^5^5 genau umgekehrt rechent, also (5^5)^5.
In der Tat gibt es Modelle (z.B. Ti-30 XII), die das so machen - ist aber mathematisch nicht korrekt. Es gibt andere Modelle (z.B. Casio FX-82/85/350-ES), die es richtig machen.
mkallas hat geschrieben:Wenn es kein programmierbarer Taschenrechner ist, dann kannst du das ja nur nacheinander eingeben:

Code: Alles auswählen

5^5    (3125)
^5     (298023223876953125)
Auf welchem Taschenrechner-Stand bist du denn? Natürlich kann man das direkt eingeben.
Antworten