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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren