Как стать автором
Обновить

Ошибка умножения в Excel 2007

Время на прочтение1 мин
Количество просмотров4.3K
Если в Excel 2007 умножить 850 на 77.1, то результат будет 100000, а не 65535, как ожидается. Более того, если прибавить 1 (=A1+1), то результат будет 100001, а если отнять, то 65534. Случаев, когда Excel 2007 ошибается достаточно много:

=5.1*12850
=10.2*6425
=20.4*3212.5
=40.8*1606.25
=77.1*850
=154.2*425
=212.5*308.4
=308.4*212.5
=425*154.2
=2*10.2*3212.5
и т.д.

К счастью, ошибка проявляет себя достаточно ограниченно. Если прибавить не 1, а любое другое число, то результат будет верный. Тем не менее, при расчете достаточно сложных таблиц эта ошибка может неприятно проявить себя.

По неподтвержденным данным, патч уже создан и доступен узкому кругу подписчиков MSDN (high-level MSDN subscribers). Однако официальной информации пока на сайте нет.

Предыдущие версии Excel не содержат этой ошибки.

Некоторые из других особенностей экселя:
1. Excel 2003 нормально умножает 850 на 77.1, но если перевести результат (65535) в шестнадцатеричную систему с помощью Dec2Hex, то результат будет FFFE, что на 1 меньше правильного ответа. Соответственно, Dec2Hex(850*77.1+1) будет FFFF, что опять на 1 меньше. В то же время, Dec2Hex(850*77.1+2) = 10001, т.е. вычисление проходит правильно.

2. Excel не всегда верно рассчитывает стандартное отклонение. Например, если взять произвольный x и посчитать стандартное отклонение для последовательности x+1, x+2, ..., x+10, то результат должен быть 3.027650354. Однако для некоторых x Excel неправильно считает стандартное отклонение. Например, для 9989999999223 мы получаем 123575.8667. Если слегка изменять это значение x (в пределах 0.05), то стандартное отклонение будет изменяться на очень значительную величину.

По материалам microsoft.public.excel.

P.S. Дебют на хабре :)
Теги:
Хабы:
+79
Комментарии65

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн