Ошибки округления Excel

3

На новом листе (я использую Excel 2013), начиная с верхнего левого угла, я набираю:

=18.6 + 67.2 | =A1-85.8 = 0 | =(A1-85.8) * 1000000000000

ожидание

85.8 | TRUE | 0

Фактический результат

85.8 | FALSE | 0.014210855

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

Может кто-нибудь объяснить, почему это происходит и почему это происходит только с некоторыми парами значений (и всегда не целыми числами)?


Количество строк, заполненных так (и повторное использование F9 ):

=RANDBETWEEN(10, 1000)/10 | =RANDBETWEEN(10, 1000)/10 | =A1 + B1 | =C1-ROUND(C1,1)=0 | =(C1-ROUND(C1,1)) * 1000000000000

помогает продемонстрировать очевидную случайную природу этого явления.

Bob Sammers
источник

Ответы:

4

Мы можем увидеть этот странный эффект в действии (как думает Excel), обновив столбец B из =A1-85.8 = 0 в =A1-85.8

Итак, используйте КРУГЛЫЙ, чтобы исправить это

НАПРИМЕР

=ROUND(A1-85.8, 0) = 0

Объяснить, почему  пожалуйста, просмотрите это Источник это все объясняет (слишком много, чтобы скопировать)

Также по той же ссылке, что и выше

В некоторых случаях вы можете предотвратить ошибки округления   влияя на вашу работу, используя параметр «Точность как отображается». это   опция заставляет значение каждого числа в листе быть   отображаемое значение. Чтобы включить эту опцию, выполните следующие действия:

В Excel   2003 и в более ранних версиях, нажмите Параметры в меню Сервис. На   На вкладке «Расчет» установите флажок «Точность как отображается».

В Excel 2007 нажмите кнопку Microsoft Office, выберите Параметры Excel,   а затем щелкните по расширенной категории. При вычислении этого   раздел книги, выберите нужную книгу, а затем выберите   Установите точность, как отображается флажок.

В Excel 2013 и 2010 щелкните   Файл, затем Параметры, а затем щелкните категорию Дополнительно. в   При расчете этого раздела книги выберите нужную книгу,   и затем установите флажок Задать точность как отображается.

Dave
источник
Спасибо за ссылку. На самом деле, вместо того, что вы процитировали (что, безусловно, может быть полезно для тех, кто не знает об этом), я думаю, что первая часть страницы более актуальна для вопроса. Это напомнило мне, что значения с повторяющимися дробными частями различны между двоичным и десятичным. Я уверен, что это полностью объясняет поведение Excel здесь.
Bob Sammers
@BobSammers, пожалуйста, посмотрите на изменения в моем ответе, я думаю, что я действительно сделал это первоначально, а затем передумал !!
Dave
В самом деле, вы сделали! Если вы вернете его обратно (возможно, без бита IEE 754 - я знаю, что это относится к механике, но несколько касательно вопроса), я ожидаю, что смогу увидеть это как «приемлемый» ответ (я имею в виду можно официально принять - это вполне приемлемо в разговорном смысле).
Bob Sammers