Đây chỉ là một câu đố nhỏ ngớ ngẩn, nhưng nếu bạn không quan tâm đến độ chính xác hoàn hảo (ai quan tâm nếu bạn cho hay mất một giây khi nói về hàng thế kỷ?) Thì TotalTime
là gấp đôi, giá trị tối đa mà nó có thể lưu trữ là1.7976931348623157E+308
.
Tôi không chắc chắn làm thế nào tràn hoạt động trong C #, nhưng nếu bạn chạy trò chơi lâu hơn thế này, tôi đoán nó sẽ quay trở lại một cái gì đó như -1.798*10^308
, hoặc đơn giản là không thay đổi. Nó cũng phụ thuộc vào cách nó được thực hiện trong nội bộ.
Điều đó nói rằng, số mili giây đó là khá lớn. Nếu bạn so sánh nó với thời đại giả thuyết của vũ trụ, thì ... Uh ... Chà nó vẫn còn khá lớn .
Tất nhiên, như Sam nói, thời gian thực sự được lưu trữ trong tích tắc (một phần mười của một nano giây?), Vì vậy bạn sẽ chạy vào "giới hạn" sau một khoảng thời gian " ngắn hơn nhiều ". Nó vẫn còn một cái gì đó giống như một khối lập phương của một googol lần so với tuổi của vũ trụ.
Tôi không biết làm thế nào GameTime
lưu trữ thời gian, chính xác, vì vậy điều này cũng có nghĩa là bạn có thể không bao giờ thực sự thấy TotalMilliseconds
đầu ra "gần" với giá trị tối đa của nó. Mặc dù, nếu thời gian đóng gói thành ngày và năm bất cứ khi nào giá trị bọ ve đủ cao và không chỉ khi bạn gọi getter, thì bộ đếm thời gian sẽ tăng cho đến khi giá trị tối đa tính double
bằng năm , thậm chí còn cao hơn .
Nếu, vì một lý do nào đó, trò chơi của bạn nên có nội dung phong phú đến mức đòi hỏi thời gian trong đó rất nhiều vũ trụ được sinh ra và diệt vong để khám phá đầy đủ, tồn tại các loại dữ liệu chuyên biệt để lưu trữ số lượng lớn tùy ý. Java có BigDecimal
kích thước cơ bản bị giới hạn bởi RAM của bạn (và thông qua bộ nhớ ảo, thậm chí cả không gian đĩa cứng). Rõ ràng, C # không có BigDecimal
, nhưng nó có BigInteger
.
Nếu bạn tạo ra một trò chơi có quy mô hoành tráng như vậy, chắc chắn sẽ được chơi bởi chính các vị thần, bạn có thể sẽ bắt đầu bằng cách sao chép BigDecimal
lớp, sau đó thực hiện lại GameTime
lớp (hoặc thậm chí chỉ định kỳ thêm GameTime
giá trị của bạn vào BigDecimal
) để sử dụng nó.