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

Если в 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, а любое другое число, то результат будет верный. Тем не менее, при расчете достаточно сложных таблиц эта ошибка может неприятно проявить себя.

Предыдущие версии 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), то стандартное отклонение будет изменяться на очень значительную величину.

Патч уже создан и доступен узкому кругу подписчиков MSDN (high-level MSDN subscribers).

  1. Хомяк

    пост из серии "а знаете ли вы, что секс это всего лишь Ctr + C" 🙂

  2. Вадюха

    Проверил в XP. работает правильно.
    Может я неправильно проверял…

  3. visiteur

    У меня в 2007 так всё и есть, 850х77.1=100000 🙂

  4. helenforester

    слава богу такие сложные расчеты мне в экселе вести не приходицца 🙂

Добавить комментарий