
Баг: Потеря точности при преобразовании `int` → `float32` → `int`
Что делают:var x int = 16777217; f := float32(x); back := int(f) и получают 16777216.
Почему ошибка:float32 имеет только ~7 значащих цифр. Большие целые теряют точность при конвертации.
Как правильно:
Если нужна целочисленная точность для больших чисел, не используй float32. Для безопасного перевода int → float64 → int потери не будет до 2⁵³ (≈9·10¹⁵). Если числа больше - используй специальные библиотеки или работай целиком с int64/big.Int.
Загрузка...