Guten Abend, Ich habe momentan ein Problem, das ich mir nicht erklären kann. In einer Windows Forms app wird ein Long Wert in einer Textbox ausgegeben. Es handelt sich um ein Spiel, in dem man etwas produziert und der Score, der eben in der Textbox angezeigt wird, soll irgendwann astronomisch hohe werte annehmen. Eine Andere Long Variable wird jede Sekunde auf den Score aufaddiert. Das alles funktioniert auch problemlos, bis der Score eine gewisse größe erreicht und plötzlich nichts mehr passiert. Der andere Long wert, der bisher jede Sekunde addiert wurde, wird jetzt nicht mehr addiert. private void timer1_Tick(object sender, EventArgs e) { Score = Score + Autoproduktion; } ich kann den score auch per klick beeinflußen, was weiterhin funktioniert. nur die Addition der Autoproduktion funktioniert eben plötzlich nicht mehr, wenn der score so ca. in den 30 stelligen bereich kommt. hat jemand eine Ahnung, woran das liegen kann?
Jonny C schrieb: > wenn der score so ca. in den 30 stelligen bereich > kommt. > > hat jemand eine Ahnung, woran das liegen kann? Ueberleg mal, wie gross der Wert bei 2^64 werden kann. Kleiner Tipp: 18.446.744.073.709.551.616 Und jetzt zaehle mal die Stellen, und dann kommst du vielleicht auf dein Problem.
verstehe ich das richtig, dass ein double wert zwar 1,79769313486232x10^308 groß werden kann, aber alle dezimalstellen nach der 18. bleiben am ende nullen?
Wahrscheinlich brauchst du die System.Numerics.BigInteger. Da kannst du addieren, bis der Hauptspeicher ausgeht.
> verstehe ich das richtig,..
Nein. Zwar in der Richtung. Der groesste darstellare Wert ist 10^3932
Davon sind 53 bit Mantisse und 11 bit exponent. Die signifikanten
Stellen sind die 53 bit. Dh kleiner als das 53.te bit bringt nichts
mehr.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.