| К сожалению, это число не может быть представлено точно (в чем мы убедились раньше), поэтому в результате сложения будет получено число ."/, (т.е. первое из слагаемых). Если теперь прибавить к полученному результату следующее число /.. то опять возникнет та же ошибка усечения и вновь будет получен тот же неверный ответ — 2 /> А теперь попробуем сложить те же числа, но в обратном порядке. Сначала сложим числа /» и /■. в результате чего получим число /„ двоичным представлением которого является битовая комбинация 0.01; соответствующий байт результата будет иметь вид 00111000, отражающий точное значение. Теперь прибавим число /, к следующему числу в списке, 2 /;. В результате будет получено правильное значение 21/,, которое может быть точно представлено в байте в виде кода 01101011. На этот раз мы получили правильный ответ. Можно сделать заключение, что при сложении чисел большое значение может иметь порядок, в котором они суммируются. Вся проблема состоит в том. что если очень большое число прибавить к очень маленькому, то маленькое число может быть утеряно в результате усечения. Поэтому общее правило суммирования большого количества чисел требует начинать операцию сложения с самых малых чисел, предполагая, что в результате будет получено достаточно большое промежуточное значение, которое затем можно безопасно сложить с оставшимися большими числами. В противном случае велика вероятность столкнуться с описанной выше проблемой. Разработчики современного коммерческого программного обеспечения прилагают значительные усилия, чтобы оградить пользователя от подобных проблем. В типичном приложении электронных таблиц корректные результаты могут быть достигнуты, если различия между суммируемыми значениями не превосходят 10" или меньше. Поэтому, если потребуется добавить единицу к числу 10 000 000 000 000 ООО, то велика вероятность, что будет получен ответ 10 000 000 000 000 ООО вместо предполагаемого значения 10 000 000 000 000 001. Такие проблемы имеют очень большое значение и приложениях, подобных навигационным системам, где даже малейшие ошибки могут накапливаться в ходе последующих вычислений, что может привести к весьма серьезным последствиям. Страница: 1 | 2 | 3
Дата публикации: 23.10.2014 (просмотров: 5062)Комментарии на сайте: |