
Баг: Незнание переполнения (overflow) и исчезновения (underflow)
Что делают:
Умножают math.MaxFloat64 * 2.0 и ждут какого-то огромного числа, а получают +Inf.
Или умножают 1e-200 * 1e-200 и ждут 1e-400, а получают 0.
Почему ошибка:
При переполнении результат выходит за пределы максимального порядка и превращается в бесконечность. При исчезновении порядок падает ниже минимального – число схлопывается в ноль.
Как правильно:
Проверять диапазоны входных данных. Если операция может дать Inf или 0 неожиданно – использовать защитное программирование (например, проверять через math.IsInf).
Загрузка...