
Баг: Прямое приведение `float` → `uint` для отрицательных чисел
Что делают:uint(-3.14) и ожидают 0 или ошибку. Получают огромное положительное число (например, 18446744073709551613).
Почему ошибка:
Биты отрицательного числа интерпретируются как беззнаковое. Математического преобразования не происходит.
Как правильно:
Сначала проверять, что число неотрицательное:
if f >= 0 {
u := uint(f)
} else {
// ошибка или обработка
}Загрузка...