Пользователи Microsoft Excel 2007 обнаружили, что программа не всегда показывает верный результат вычислений, сообщает CNews.Так, с помощью любого калькулятора нетрудно проверить, что результатом умножения 850 на 77,1 является число 65 535, однако Excel так не считает и выдает совершенно иной ответ – 100 000. Ошибка возникает не только во время перемножения этих чисел, но и при умножении 5,1 на 12850, 10,2 на 6425 и еще в девяти других случаях.
Между тем в блоге Microsoft Developer Network сообщается, что ошибка присутствует не в вычислениях, а в отображении верного результата, т.е. в памяти программа хранит корректное число. «При вычислении =850*77,1 вы увидите неверный результат, но если в другой ячейке умножить его на два, то программа выдаст вполне корректное число 131 070», - отмечает редактор блога Дэвид Гайнер (David Gainer).
Разработчики обнаружили, что из всего огромного множества чисел с плавающей запятой, которые может хранить Excel 2007, существует шесть чисел между 65534.99999999995 и 65535, а также шесть чисел между 65535.99999999995 и 65536, которые и вызывают ошибку. «Вы можете вводить эти числа в ячейки, и это не вызовет проблем, но если такое число является результатом вычислений, оно отображается неверно», - сообщается в блоге.
Об этом недочете разработчикам стало известно 24 сентября и уже на следующий день они нашли способ, как его исправить. В настоящий момент патч уже разработан и проходит этап тестирования. Вскоре он будет опубликован на сайте компании. По словам г-на Гайнера, программисты Microsoft относятся к вычислениям в Excel очень ответственно и предпримут все необходимые меры для того, чтобы исправить ошибку. Один из участников блога упомянул, что подобная ошибка может быть обнаружена и в Visual Studio 2005, однако представители Microsoft эту информацию не комментировали.
Данная ситуация заставляет вспомнить о печально известной ошибке Pentium FDIV на некоторых процессорах Pentium, которая приводила к случайным погрешностям при делении чисел с плавающей точкой. Ошибка была раскрыта профессором американского колледжа в 1994 г., а затем замечена пользователями по всему миру. Некоторое время Intel старался убедить, что ошибка не является серьезной. Однако впоследствии шквал критики в адрес компании заставил ее отозвать все процессоры с этим дефектом.
Начать дискуссию