C# Addition von Long zahlen funktioniert plötzlich nicht mehr

Gast #5686367
Lesenswert?
• ▲
▼
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?
Gast #5686477
Lesenswert?
• ▲
▼
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.
Gast #5687467
Lesenswert?
• ▲
▼
> 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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.