I'm glad you're so honest about it XD Anyway well done. Regarding why it reaches too soon, it is possible that the issue is that you're using a double.
A double is a 8 bytes (64 bits) float number. But in short, it is a 2 ints(4 byes, 32 bits), where the first 4 bytes is the nominator and the second 4 bytes is the denominator. It means that the number is based on divisions, and something I noticed in unity, it doesn't choose the best ones, it chooses the fastest to reach ones.
I think that if you wanted large numbers the best choice would have been the ulong, an integer of 8 bytes with no sign.
But I think that the game is perfect as it is now, so don't worry so much about it.