Я создаю небольшую браузерную игру на основе базы данных для хобби и наткнулся на эту проблему: я храню деньги, принадлежащие пользователям, как 32-битное целочисленное поле (если быть точным: два поля. Одно хранит деньги в руках игроков, другое - деньги хранятся в банке). Все мы знаем, что максимальное значение, которое может быть сохранено в 32 битах, равно 2 ^ 32-1.
Я абсолютно уверен, что 95% игроков не смогут достичь верхнего предела, но с другой стороны (и после некоторых сегодняшних вычислений) хорошие игроки смогут накопить так много.
Имея это в виду, я пришел со следующими идеями:
- хранит деньги в 64 битах, что удваивает пространство каждой записи.
- хранить деньги в виде строки и конвертировать в / из long long во время выполнения.
- Измените игровую механику, чтобы игроки не могли получить такое количество богатства.
Я знаю, что наличие достижимого верхнего предела довольно ограничивает некоторых игроков, поэтому для меня третий вариант является худшим из предложенных.
Есть ли другие способы решения подобных проблем? Кого бы Вы выбрали?