Какой тип данных в Java лучше использовать для хранения игровых очков или рейтинга?

«Какой тип данных в Java лучше использовать для хранения игровых очков или рейтинга?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для хранения целочисленных очков (счет, рейтинг, уровень) используйте примитивные целочисленные типы:

  • int — если значения не превышают ±2.1 миллиарда (диапазон: -2³¹ до 2³¹-1).
  • long — для очень больших значений (до ~9.2 квинтиллионов).

Пример:

int playerScore = 10_000;
long globalHighScore = 5_000_000_000L; // Требуется суффикс 'L'

Почему НЕ использовать float или double? Типы с плавающей точкой (float, double) подвержены ошибкам округления из-за двоичного представления. Например:

// Неправильно для точных значений:
double score = 100.0 - 0.1; // Может стать 99.89999999999999
// Правильно:
int score = 100 - 1; // Всегда 99

Исключение: Если очки могут быть дробными (например, 12.5) и требуют высокой точности, используйте BigDecimal. Для целых значений это избыточно.