Seite 1 von 1

Sind meine Zahlen zu groß?

Verfasst: Mittwoch 14. Oktober 2009, 18:22
von Tyrax
Hallo Gemeinde,

ich arbeite gerade an den Daten, die ich aus einer Simulation bekomme, die ich mit Python (Enthought 5.0, i.e. Python 2.5.4) geschrieben habe. An einer Stelle taucht ein Effekt auf, denn ich nicht nachvollziehen kann - ich vermute aber, dass die von mir verwendeten integers zu groß sind (etwa 10^10).

Meine Frage ist nun, inwieweit meine Vermutung zutreffen und wie ich das Problem ggf. lösen könnte. Mein Python-Buch weiß darüber nichts zu berichten, außer dass ab etwa 2*10^9 automatisch auf Long-integer geschaltet wird. Doch wie groß dürfen Long-integers werden?

Danke und Grüße, Tyrax

Re: Sind meine Zahlen zu groß?

Verfasst: Mittwoch 14. Oktober 2009, 18:25
von numerix
Tyrax hat geschrieben:Meine Frage ist nun, inwieweit meine Vermutung zutreffen und wie ich das Problem ggf. lösen könnte. Mein Python-Buch weiß darüber nichts zu berichten, außer dass ab etwa 2*10^9 automatisch auf Long-integer geschaltet wird. Doch wie groß dürfen Long-integers werden?
Beliebig groß - bis der Rechner schlapp macht.

Verfasst: Mittwoch 14. Oktober 2009, 19:34
von Dav1d

Code: Alles auswählen

>>> sys.maxint
2147483647
oder für Python 3:

Code: Alles auswählen

>>> sys.maxsize
2147483647

Verfasst: Mittwoch 14. Oktober 2009, 19:43
von sma
10-hoch-10 (also 10000000000L) kann problemlos dargestellt werden. Der Wert von "sys.maxint" spielt hierbei keine Rolle, denn es ist, wie numerix schon sagte: Die Zahlen können so groß sein, wie sie in den Hauptspeicher passen.

Code: Alles auswählen

10**10000+1
Stefan

Verfasst: Mittwoch 14. Oktober 2009, 19:44
von jbs
dann probier doch mal

Code: Alles auswählen

sys.maxint + 1

Verfasst: Mittwoch 14. Oktober 2009, 19:47
von Redprince

Code: Alles auswählen

>>> sys.maxint + 1
2147483648L
Und nu? :s

Verfasst: Mittwoch 14. Oktober 2009, 20:19
von derdon
Vielleicht meinte jbs das hier:

Code: Alles auswählen

>>> type(sys.maxint), type(sys.maxint+1)
(<type 'int'>, <type 'long'>)
Aber was er uns damit sagen will, ist mir schleierhaft.

Verfasst: Mittwoch 14. Oktober 2009, 21:05
von jbs
Es lässt sich so ganz gut beschreiben :oops:
sma hat geschrieben:10-hoch-10 (also 10000000000L) kann problemlos dargestellt werden. Der Wert von "sys.maxint" spielt hierbei keine Rolle, denn es ist, wie numerix schon sagte: Die Zahlen können so groß sein, wie sie in den Hauptspeicher passen.

Code: Alles auswählen

10**10000+1
Stefan

Verfasst: Mittwoch 14. Oktober 2009, 23:24
von Tyrax
Danke, dann muss ich einen besseren Grund für die seltsamen Daten finden.

Grüße, Tyrax

Verfasst: Donnerstag 15. Oktober 2009, 08:17
von CM
U. U. hilft ein bißchen Code - vielleicht können wir helfen? (Falls Du Dich dazu entschließt: Eine gute Problembeschreibung nicht vergessen.)