Ошибка 1. Сравнение float на точное равенство
a = 0.1 + 0.2
print(a == 0.3) # False
Почему: двоичное представление десятичных дробей неточно.
✅ Исправление
import math
a = 0.1 + 0.2
print(math.isclose(a, 0.3, rel_tol=1e-9))
Ошибка 2. from math import *
from math import *
def sqrt(x):
return x ** 0.5
print(sqrt(16)) # неожиданный результат или ошибка
Почему: импорт «звёздочкой» может переопределить ваши собственные функции и переменные.
✅ Исправление
import math
def my_sqrt(x):
return x ** 0.5
print(math.sqrt(16))
print(my_sqrt(16))
Ошибка 3. Передача float в Decimal
from decimal import Decimal
print(Decimal(0.1) + Decimal(0.2))
# 0.3000000000000000166533453694...
Почему: 0.1 как float уже содержит погрешность.
✅ Исправление
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # 0.3
Ошибка 4. Неправильное ожидание от round()
print(round(2.5)) # 2, а не 3
Почему: Python использует банковское округление (round-half-to-even).
✅ Исправление
Если нужно школьное округление «от нуля», используйте собственную функцию на основе знака числа или Decimal с явным режимом округления.
Ошибка 5. Тригонометрия в градусах
import math
print(math.sin(90)) # не 1.0!
Почему: math.sin принимает радианы, а не градусы.
✅ Исправление
import math
print(math.sin(math.radians(90))) # 1.0