То, что вы написали, по сути даже правильно, но есть один глюк, который вызывает у студентов взрыв мозга и непонимание, лучше его специально объяснить. Как-нибудь так:
В десятичной системе число 1/3 = 0.3333333... требует бесконечного количества разрядов для представления, аналогично и в двоичной системе, в которой хранятся данные в компьютере. Но в памяти машины нет места для бесконечного числа разрядов, часть их приходится отсекать и терять на этом точность. Много вычислений подряд может увеличивать потерю точности после каждого шага. Кроме того, обычно данные вводятся в десятичном формате, хранятся и вычисляются в двоичном, после чего обратно преобразуются в десятичный. Даже если в одном из форматов число выглядит "точным", в другом это не так. Например, 1/10 в двоичный вид и обратно точно не конвертировать, а 1/2- можно. За счет этого получаются такие "загадочные" ситуации, когда вводят "0.1", и вроде бы даже никаких вычислений не делается, но потом показывается "0.10000000000000001". На самом деле вычисления там все-таки
( ... )
1) Оно противоречит их опыту. Питон достаточно аккуратно считает и выводит. Мне пришлось специально долго и упорно подбирать тесты, чтобы теоретически 2.0, у одних недодали, другим переложили.
2) Ок, хорошая мысль - подчеркнуть, что еще конвертация туда-сюда на этапе чтения и вывода.
Внезапно. Как-то шквал отзывов "афтор, пеши исчо", в смысле, что лучше как я писать, люди понимают. Я думала, все страдают поголовно от моего корявого построения фраз.
Comments 20
Кстати, основная проблема в обоих объяснениях та, что они оба неправильные фактически :)
Reply
Reply
То, что вы написали, по сути даже правильно, но есть один глюк, который вызывает у студентов взрыв мозга и непонимание, лучше его специально объяснить. Как-нибудь так:
В десятичной системе число 1/3 = 0.3333333... требует бесконечного количества разрядов для представления, аналогично и в двоичной системе, в которой хранятся данные в компьютере. Но в памяти машины нет места для бесконечного числа разрядов, часть их приходится отсекать и терять на этом точность. Много вычислений подряд может увеличивать потерю точности после каждого шага. Кроме того, обычно данные вводятся в десятичном формате, хранятся и вычисляются в двоичном, после чего обратно преобразуются в десятичный. Даже если в одном из форматов число выглядит "точным", в другом это не так. Например, 1/10 в двоичный вид и обратно точно не конвертировать, а 1/2- можно. За счет этого получаются такие "загадочные" ситуации, когда вводят "0.1", и вроде бы даже никаких вычислений не делается, но потом показывается "0.10000000000000001". На самом деле вычисления там все-таки ( ... )
Reply
2) Ок, хорошая мысль - подчеркнуть, что еще конвертация туда-сюда на этапе чтения и вывода.
Reply
Reply
Reply
Reply
Я думала, все страдают поголовно от моего корявого построения фраз.
Reply
Leave a comment