Ошибки округления 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

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

Ответы:


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 щелкните   Файл, затем Параметры, а затем щелкните категорию Дополнительно. в   При расчете этого раздела книги выберите нужную книгу,   и затем установите флажок Задать точность как отображается.


Спасибо за ссылку. На самом деле, вместо того, что вы процитировали (что, безусловно, может быть полезно для тех, кто не знает об этом), я думаю, что первая часть страницы более актуальна для вопроса. Это напомнило мне, что значения с повторяющимися дробными частями различны между двоичным и десятичным. Я уверен, что это полностью объясняет поведение Excel здесь.
Bob Sammers

@BobSammers, пожалуйста, посмотрите на изменения в моем ответе, я думаю, что я действительно сделал это первоначально, а затем передумал !!
Dave

В самом деле, вы сделали! Если вы вернете его обратно (возможно, без бита IEE 754 - я знаю, что это относится к механике, но несколько касательно вопроса), я ожидаю, что смогу увидеть это как «приемлемый» ответ (я имею в виду можно официально принять - это вполне приемлемо в разговорном смысле).
Bob Sammers
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.