Сайт работает в тестовом режиме - все замечания, предложения и информацию о найденных ошибках направляйте, пожалуйста, в Telegram-группу
Курс в процессе наполнения. Полный курс доступен на Степике

Баг: Потеря точности при преобразовании `int` → `float32` → `int`

Что делают:
var x int = 16777217; f := float32(x); back := int(f) и получают 16777216.

Почему ошибка:
float32 имеет только ~7 значащих цифр. Большие целые теряют точность при конвертации.

Как правильно:
Если нужна целочисленная точность для больших чисел, не используй float32. Для безопасного перевода intfloat64int потери не будет до 2⁵³ (≈9·10¹⁵). Если числа больше - используй специальные библиотеки или работай целиком с int64/big.Int.

Загрузка...