Dies ist eher eine dumme Kleinigkeit, aber wenn Sie sich nicht für perfekte Präzision interessieren (wen interessiert es, wenn Sie eine Sekunde geben oder nehmen, wenn Sie über Jahrhunderte sprechen?), Dann TotalTimeist das auch ein Doppelgänger maximalen Wert , den es speichern ist 1.7976931348623157E+308.
Ich bin mir nicht sicher, wie Überläufe in C # funktionieren, aber wenn Sie das Spiel länger laufen lassen, würde es wahrscheinlich entweder auf so etwas zurückgehen -1.798*10^308 oder sich einfach nicht ändern. Es hängt auch davon ab, wie es intern implementiert wird.
Trotzdem ist diese Anzahl von Millisekunden ziemlich groß. Wenn man es mit dem hypothetischen Zeitalter des Universums vergleicht, ist es ... Äh ... Nun, es ist immer noch so ziemlich groß .
Natürlich, wie Sam sagte, wird die Zeit tatsächlich in Zecken gespeichert (Zehntel einer Nanosekunde?), So dass Sie nach einer " viel kürzeren " an die "Grenze" stoßen würden " Zeitspanne an . Es ist immer noch so etwas wie ein Würfel eines Googols, mal das Zeitalter des Universums.
Ich bin mir nicht sicher, wie GameTimegenau die Zeit gespeichert wird. Dies bedeutet auch, dass die TotalMillisecondsAusgabe möglicherweise nie "nahe" an ihren Maximalwert kommt. Wenn die Verpackungszeit in Tage und Jahre ist, wenn der Tick-Wert hoch genug wird, und nicht nur, wenn Sie den Getter anrufen, erhöht sich der Timer bis zum Maximalwert von double in Jahren , der sogar noch höher ist .
Wenn Ihr Spiel aus irgendeinem Grund so reichlich Inhalt haben sollte, dass Zeiträume erforderlich sind, in denen sehr viele Universen geboren werden und zugrunde gehen, um sie vollständig zu erforschen, gibt es spezielle Datentypen zum Speichern beliebig großer Zahlen. Java hat eine, BigDecimalderen Größe im Wesentlichen durch Ihren RAM (und durch den virtuellen Speicher, sogar Festplattenspeicher) begrenzt ist. Anscheinend hat C # nicht BigDecimal, aber es hat BigInteger.
Wenn Sie solch ein episch skaliertes Spiel machen, das zweifellos von den Göttern selbst gespielt werden soll, würden Sie wahrscheinlich zuerst die BigDecimalKlasse duplizieren und dann die GameTimeKlasse neu implementieren (oder sogar nur regelmäßig GameTimeden Wert Ihrer Klasse hinzufügen BigDecimal), um sie zu verwenden.