Федеральный портал школ России
Закрыть

Урок 8. Python: вещественные числа и точность

17.10.2026 - Андрей -

  • Учебные программы
  • Информатика

Программирование на Python и C++ · 7 класс

Урок 8 из 34 · 45 минут · Модуль «Числа»

Уровень: начинающий программист; Python 3.

Вся программа курса

Программа выводит 0.30000000000000004 вместо 0.3. Это ошибка сложения или особенность хранения числа? Различим точность вычисления и вид строки на экране.

Результат урока: Объяснить приближённое хранение float, сравнить числа с допуском и вывести результат с заданным количеством знаков.
Учителю: подготовка и план на 45 минут

Подготовьте компьютер, локальную папку с правом записи, Python/IDLE, распечатку ученической части PDF, бумагу и ручку. Внешние библиотеки не нужны: только стандартный Python 3.11 или новее. Все программы, входные данные, таблицы и ключи находятся в статье и PDF. Детские аккаунты, сеть и регистрация не нужны.

Уровень — начинающий, 7 класс. Предпосылки: арифметика и консольный ввод. Работа в паре: автор прогнозирует и вводит код, проверяющий ведёт журнал; затем роли меняются. На бумаге трассируйте готовый код и входные данные; для графики используйте координатную сетку и схему. Учитель может показать заранее полученный вывод/PNG. Бумажный вариант проверяет понимание, но не выдаётся за реальный запуск учеником. Чтение, ввод и проверка включены в план. Матрица программы — материал учителя.

МинутыРаботаРезультат
0–5ПроблемаВопрос и первое решение
5–14Понятия и примерСпособ проверки
14–25Практика 1Готовый продукт и проверка
25–33Практика 2Перенос способа
33–40ОбсуждениеАргумент и ограничение
40–45Индивидуальная проверкаСамостоятельный ответ

01. Проблемная ситуация

Запишите прогноз для 0.1+0.2==0.3. Затем сравните две реакции: «сломался компьютер» и «нужно проверить представление числа». Сформулируйте проверку, которая допускает ошибку меньше 0.000001, но не принимает 0.31 за 0.3.

02. Понятия и разобранный пример

5–14 минут: 4 минуты на понятия, 3 на пример, 2 на объяснение способа партнёру.

Значение, представление и формат

float обычно хранит двоичное приближение вещественного числа. Многие конечные десятичные дроби, в том числе 0.1, не представимы точно в таком формате. Небольшое расхождение не означает, что допустима любая ошибка.

abs(x−expected)≤tolerance — простая проверка абсолютной ошибки. Допуск выбирают по задаче и единицам. В этой учебной задаче числа порядка единицы и допуск 0.000001; для любых масштабов это не универсальное правило.

Формат f"{x:.2f}" создаёт строку с двумя знаками после точки. Он не изменяет исходный x и не повышает точность измерений. При вводе float используйте точку, например 2.5. В школьных данных ниже значения учебные, не реальные измерения учеников.

Отступы набирайте обычными пробелами: 4 на уровень. При копировании с веб-страницы замените неразрывные пробелы обычными; полный код с обычными пробелами есть в PDF.

x=0.1+0.2 даёт 0.30000000000000004; x==0.3 — False. Абсолютная разность около 5.55·10⁻¹⁷, меньше 0.000001, поэтому проверка с допуском True. Формат с двумя знаками выводит 0.30. Запись 0.30 — вид результата, а не новое более точное измерение.

x = 0.1 + 0.2
print(x)
print(x == 0.3)
print(abs(x - 0.3) <= 0.000001)
print(f"{x:.2f}")
Три разных действия: вычислить float → проверить ошибку по допуску → оформить строку с двумя знаками.
Три разных действия: вычислить float → проверить ошибку по допуску → оформить строку с двумя знаками.

03. Практика 1. Проверяем материал

Проверяем десятичную дробь

Запускайте пример целиком, затем проведите два независимых варианта, заменяя только первую строку на x=0.31 и x=0.3.

Проверяемое значение xabs(x−0.3)≤0.000001
0.1+0.2True
0.31False
0.3True

Составьте журнал: исходное значение, точное сравнение, проверка допуска, форматированная строка. Подчеркните, какие строки отвечают за вычисление, сравнение и оформление. Не заменяйте допуск округлением перед сравнением. Критерии: три запуска, верный False для 0.31, объяснение 0.30, различение числа и строки.

Практика 1: разбор и критерии

Для 0.31 сравнение с 0.3 False, допуск False, строка 0.31. Для 0.3 сравнение True, допуск True, строка 0.30. Исходный пример даёт False/True и строку 0.30. По 1 баллу за четыре критерия; ошибка не равна ровно 0.01 в двоичном представлении, но явно больше допуска.

04. Практика 2. Перенос способа

Среднее и число знаков

Новые учебные данные: три длины в сантиметрах вводятся отдельными строками. Напишите mean.py, выводящий среднее с двумя знаками. Тесты: 2.1,2.2,2.3 → 2.20; 0,0,0 → 0.00; 1,2,2 → 1.67. На бумаге найдите точное среднее последнего набора как дробь. Объясните, почему строка 1.67 не означает точного равенства 5/3.

Практика 2: разбор и критерии

Среднее (a+b+c)/3. Для последнего набора 5/3=1.666…; вывод 1.67 — округлённая строка. Критерии: три float-ввода, деление всей суммы, два знака, объяснение округления.

a = float(input())
b = float(input())
c = float(input())
mean = (a + b + c) / 3
print(f"{mean:.2f}")

05. Обсуждение и границы вывода

Можно ли печатать десять знаков после точки и утверждать, что измерение стало точнее? Сравните вычислительную погрешность float с неточностью исходной линейки. Предложите разумный вывод для данных до десятых сантиметра.

Обсуждение: возможный вывод

Дополнительные знаки меняют оформление, а не качество исходных данных. Ошибка хранения и ошибка измерения — разные причины неточности. В задании два знака требуются для тренировки формата; реальную точность измерений по этому выводу устанавливать нельзя.

06. Индивидуальная проверка

Предскажите строку для f"{1.5:.2f}". При x=0.3001 пройдёт ли проверка abs(x−0.3)≤0.000001? Изменяет ли форматирование x? Критерии: строка, сравнение, объяснение.

Индивидуальная проверка: ответ и критерии

Строка 1.50. Проверка False: разность около 0.0001, больше допуска. Форматирование не меняет x, создаёт строку. 3 балла.

07. Соответствие исходной программе

Пункт программы → действие → результат
Пункт программыДействие ученикаПроверяемый результат
Особенности представления вещественных чиселСравнивает точное равенство и допускОбъясняет малую ошибку
Операции с вещественными числамиВычисляет среднее и форматируетТесты 2.20, 0.00, 1.67
Источники и права на изображения

Тексты, учебные данные, реплики, программы и схемы подготовлены для уроков портала «Школы России». Числовые серии — учебные модели, не результаты проведённых классом опытов. Схемы авторские, сторонние фотографии не используются. Методические ссылки приведены для учителя; ученик получает все материалы здесь. Проверка первичных источников: 17.10.2026.