Загрузка данных


numbers = [1.1, 2.2, 3.3, 4.4]

# 1. Сложение всех четырёх чисел
total = numbers[0] + numbers[1] + numbers[2] + numbers[3]
print("1.1 + 2.2 + 3.3 + 4.4 =", total)

# 2. Сравнение с эталоном (точная сумма по правилам математики равна 11.0)
print("total == 11.0:", total == 11.0)

# 3. Абсолютная разница с эталоном
print("abs(total - 11.0) =", abs(total - 11.0))

# Здесь ошибки округления случайно сократились, поэтому покажем
# примеры, где сравнение через == даёт False.

print()
print("--- Пример 1: 1.1 + 2.2 и 3.3 ---")
a = 1.1 + 2.2
print("1.1 + 2.2 =", a)
print("1.1 + 2.2 == 3.3:", a == 3.3)
print("abs(a - 3.3) =", abs(a - 3.3))

print()
print("--- Пример 2: 0.1 + 0.2 и 0.3 ---")
b = 0.1 + 0.2
print("0.1 + 0.2 =", b)
print("0.1 + 0.2 == 0.3:", b == 0.3)
print("abs(b - 0.3) =", abs(b - 0.3))

# Как числа хранятся на самом деле (20 знаков после запятой)
print()
print("--- Что реально хранится в памяти ---")
for x in numbers:
    print(x, "->", format(x, ".20f"))

# Правильный способ сравнения: допускаем малую погрешность
print()
eps = 1e-9
print("abs(1.1 + 2.2 - 3.3) < eps:", abs(1.1 + 2.2 - 3.3) < eps)