Результат: ученик предсказывает машинный результат целочисленных и дробных вычислений, обнаруживает переполнение и потерю точности и выбирает корректную модель сравнения числовых результатов.
Содержание:
-
Проследить продвижение целочисленных операндов
- вычисление большинства операций над малыми целыми в типе
int; - влияние
uint,longиulongна общий тип выражения; - различие типа переменной и типа промежуточного результата;
- необходимость преобразования при присваивании обратно в узкий тип.
- вычисление большинства операций над малыми целыми в типе
-
Понять целочисленное деление и остаток
- отбрасывание дробной части при делении целых;
- знак частного и остатка;
- тождество
a == (a / b) * b + a % bпри ненулевомb; - порядок преобразования к дробному типу;
- ошибки формулы из-за слишком позднего преобразования.
-
Работать с диапазоном и переполнением
- конечный диапазон каждого целочисленного типа;
- переполнение промежуточного результата;
- контексты
checkedиunchecked; - различие переполнения константного выражения и вычисления времени выполнения;
- выбор более широкого типа до выполнения операции;
- отсутствие гарантии, что математически правильная формула представима выбранным типом.
-
Понять двоичную модель
floatиdouble- конечная точность и округление после операций;
- непредставимость большинства десятичных дробей;
- накопление ошибки;
- порядок операций и потеря значащих разрядов;
- различие математической и машинной ассоциативности.
-
Распознавать специальные дробные значения
NaN; положительная и отрицательная бесконечность;- получение специальных значений при некоторых операциях;
- необычное поведение сравнений с
NaN; - проверки
IsNaN,IsInfinityи конечности; - недопустимость специальных значений в предметной модели без явного решения.
-
Понять десятичную модель
decimal- точное представление многих конечных десятичных дробей;
- ограниченный диапазон и конечная точность;
- отличие от двоичных дробных типов;
- переполнение как отдельный риск;
- выбор модели по предметной семантике, а не по внешнему виду числа.
-
Сравнивать приближённые значения
- почему точное
==часто непригодно для вычисленныхfloatиdouble; - абсолютный допуск;
- относительный допуск;
- совместный критерий для малых и больших масштабов;
- содержательный выбор допуска;
- отделение ошибки представления от ошибки алгоритма.
- почему точное
-
Оценивать численную устойчивость
- эквивалентные математические формулы с разными машинными результатами;
- вычитание близких величин;
- переполнение до последующего деления;
- потеря данных при раннем округлении;
- независимая проверка результата тождеством, обратной операцией или балансом.

