Ошибка в сумме при округлении

Бухгалтеры (и не только) знают одну «нехорошую» особенность Excel – «неумение» правильно суммировать. 🙂 Иногда это приводит к казусам в бухгалтерских документах, сформированных в Excel (рис. 1)

Рис. 1. Фрагмент счет-фактуры с «неверным» суммированием

Скачать заметку в формате Word, примеры в формате Excel

Видно, что общий итог по налогу (значение в ячейке G7) и стоимости товаров (Н7) отличаются на копейку от суммы по строкам (G4:G6 и Н4:Н6, соответственно). Это ошибка является следствием округления. Дело в том, что значения только отображаются в формате с двумя десятичными знаками. Фактические значения в этих ячейках содержат больше десятичных знаков (рис. 2). Excel суммирует не отображаемые значения, а фактические.

Рис. 2. Тот же счет-фактура с большим числом знаков после запятой

Чтобы значение в ячейке G7 равнялось сумме отображаемых значений в ячейках G4:G6, можно применить формулу массива, проводящую округление значений до двух десятичных знаков перед суммированием: {=СУММ(ОКРУГЛ(G4:G6;2))} (рис. 3). [1]

Рис. 3. «Правильное» суммирование с использованием формулы массива

Чуть подробнее, как работает эта формула. Excel формирует виртуальный массив (в памяти компьютера), состоящий из трех элементов: ОКРУГЛ(G4;2), ОКРУГЛ(G5;2), ОКРУГЛ(G6;2), то есть значений в ячейках G4:G6, округленных до двух десятичных знаков, а затем суммирует эти три элемента. Вуаля! 🙂

Ошибки округления можно также исключить, применив функцию ОКРУГЛ в каждой из ячеек диапазона G4:G6. Этот прием не требует применения формулы массива, однако требует многократного использования функции ОКРУГЛ. Вам судить, что проще!


[1] Идея подсмотрена в книге Джона Уокенбаха «MS Excel 2007. Библия пользователя». Если вы не использовали ранее формулы массива, рекомендую начать с заметки Excel. Введение в формулы массива.

 

Всем доброго времени суток!
Возникла проблема (либо вопрос) — имеется таблица в эксель, которая по паре-тройке несложных формул вычисляет среднее арифметическое и затем среднюю цену за нужное количество. Проблема в том, что эксель как то неправильно считает округленное, либо неправильно округляет. И результат в части после запятой становится неверным. Все приходится персчитывать на калькуляторе, но когда строк десятки — это боль((
Подскажите пожалуйста, как можно настроить, чтобы считался правильный итог?
Заранее спасибо!

 

V

Пользователь

Сообщений: 5044
Регистрация: 22.12.2012

для округления используйте ф-цию ОКРУГЛ, тогда погрешность будет меньше при разном количестве знаков после запятой. Если к-во знаков после запятой будет одинаковое в ф-ции то и погрешность стремится к нулю.

 

Дмитрий Дмитрий

Пользователь

Сообщений: 12
Регистрация: 25.05.2022

#3

25.05.2022 09:47:53

Цитата
написал:
для округления используйте ф-цию ОКРУГЛ, тогда погрешность будет меньше при разном количестве знаков после запятой. Если к-во знаков после запятой будет одинаковое в ф-ции то и погрешность стремится к нулю.

Не совсем понял рекомендацию…В данных ячейках уже применяется свои функции…как туда можно еще ОКРУГЛ подставить? Я просто совсем нуб))
 

 

V

Пользователь

Сообщений: 5044
Регистрация: 22.12.2012

#4

25.05.2022 09:52:51

для Н8

Код
=ОКРУГЛ(СРЗНАЧ(E8:G8);4)

4 — это количество знаков после запятой, замените на нужное вам.
остальные по аналогии

Изменено: V25.05.2022 09:53:44

 

Дмитрий Дмитрий

Пользователь

Сообщений: 12
Регистрация: 25.05.2022

#5

25.05.2022 10:08:34

Цитата
написал:
=ОКРУГЛ(СРЗНАЧ(E8:G8);4)

Спасибо, в первой ячейке все получилось, но итог проверить не могу, т.к на вот такую конструкцию ругается. Видимо, неправильно

Код
=ОКРУГЛ(D8/3)*(СУММ(E8:G8); 2))

Изменено: Дмитрий Дмитрий25.05.2022 10:11:46

 

Wild.Godlike

Пользователь

Сообщений: 642
Регистрация: 23.05.2018

#6

25.05.2022 10:11:20

Дмитрий Дмитрий,

Код
=ОКРУГЛ((D8/3)*(СУММ(E8:G8));2)

Изменено: Wild.Godlike25.05.2022 10:11:36

 

Спасибо, точно, я накосячил))
Но увы, результат все равно считается с ошибкой….При проверке на калькуляторе итог отличается

Прикрепленные файлы

  • 11111.JPG (92.38 КБ)

 

V

Пользователь

Сообщений: 5044
Регистрация: 22.12.2012

#8

25.05.2022 10:51:24

в I со скобками напутали.

Код
=КОРЕНЬ(СУММ((СТЕПЕНЬ(E8-H8;2));(СТЕПЕНЬ(F8-H8;2));(СТЕПЕНЬ(G8-H8;2)))/(ЧИСЛСТОЛБ(E8:G8)-1))

Среднее квадратичное отклонение и коэффициент вариации нужно столько знаков после запятой?

Изменено: V25.05.2022 10:53:50

 

Да, спасибо, исправил.
Но на итог эта формула не влияет, только на квадратичное и на вариацию. А с округлением пока никак

 

Дмитрий Дмитрий

Пользователь

Сообщений: 12
Регистрация: 25.05.2022

#10

25.05.2022 10:57:54

Цитата
написал:
в I со скобками напутали.

Код
    [URL=#]?[/URL]       1      =КОРЕНЬ(СУММ((СТЕПЕНЬ(E8-H8;2));(СТЕПЕНЬ(F8-H8;2));(СТЕПЕНЬ(G8-H8;2)))/(ЧИСЛСТОЛБ(E8:G8)-1))   

 

Среднее квадратичное отклонение и коэффициент вариации нужно столько знаков после запятой?

Вроде это не регламентировали..9 знаков всегда стояло

 

V

Пользователь

Сообщений: 5044
Регистрация: 22.12.2012

Я не вижу что вы там на калькуляторе считаете, так что могу только догадываться. Догадки кончились.

П.С. не нужно бездумно цитировать полностью сообщения.

Изменено: V25.05.2022 11:10:14

 

Msi2102

Пользователь

Сообщений: 3276
Регистрация: 31.03.2014

#12

25.05.2022 11:15:24

Цитата
Дмитрий Дмитрий написал:
При проверке на калькуляторе итог отличается

Если нужно как на калькуляторе, попробуйте включить эту галочку

Прикрепленные файлы

  • Снимок экрана 2022-05-25 111422.png (48.67 КБ)

 

На калькуляторе я делаю то же самое — складываю три первых значения и делю сумму на 3. Затем получившийся результат умножаю на требуемое число из колонки КОМПЛ. Итог расходиться с подсчетом экселя. На этом скрине уже подсчитано и записано вручную

Прикрепленные файлы

  • 11111.JPG (91.52 КБ)

 

Jack Famous

Пользователь

Сообщений: 11087
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Получилось так потому, что первая тема при ее просмотре не содержала текстовое описание — т.е. только заголовок и краткое описание. Не знаю, с чем связан такой глюк, но я заходил под собой, потом заходил с другого ПК, и даже с телефона…текста не было. Отписал модератору, но оперативного ответа не получил. Получил ответ уже гораздо позже, после создания второй темы, которая кстати, сразу отобразилась без глюков. Модератор ответил,что все норм. И действительно, после этого стало все норм.
Извиняюсь за кросспостинг, прошу почистить((

 

Msi2102, увы, не помогло. Калькулятор при умножении считает так  70,71*150 = 10606,50

Прикрепленные файлы

  • ааааа.jpg (106.3 КБ)

 

V

Пользователь

Сообщений: 5044
Регистрация: 22.12.2012

#17

26.05.2022 09:07:44

Цитата
Дмитрий Дмитрий написал:
70,71*150 = 10606,50

почему так? у вас в формуле другая запись.

Код
=(150/3)*СУММ({69,97;70,79;71,36})=50*212,12=10606,00

Изменено: V26.05.2022 09:15:41

 

Msi2102

Пользователь

Сообщений: 3276
Регистрация: 31.03.2014

#18

26.05.2022 09:20:46

Цитата
Дмитрий Дмитрий написал:
Калькулятор при умножении считает так  70,71*150 = 10606,50

Excel тоже

Прикрепленные файлы

  • Снимок экрана 2022-05-26 091940.png (3.34 КБ)

 

Igor67

Пользователь

Сообщений: 3733
Регистрация: 21.12.2012

Какая замечательная фигня. Все очень похоже на правду, но Ехс считает не правильно. Приложу все-таки файл. На картинках не понятно.
Решение было дано еще в начале — округляй. Не все что видишь так и есть. А дальше просто блеск… Делим требуемый объем на количество предложений и умножаем на сумму цен. А надо объем на среднюю. Как еще почти совпало. А в других расчетах скобки стояли так, что получалась средняя температура по больнице.

Изменено: Igor6726.05.2022 13:22:44

 

Дмитрий Дмитрий

Пользователь

Сообщений: 12
Регистрация: 25.05.2022

#20

27.05.2022 07:51:08

Igor67, спасибо, я все понял. Ошибочно полагалось, что (150/3)*СУММ({69,97;70,79;71,36}) равнозначно СУММ(({69,97;70,79;71,36})/3))*150. Как оказалось, совсем не равнозначно.
Но, есть и одно но — заменять «=((D9/3)*(СУММ(E9:G9)))» на банальное «=H9*D9» нельзя, т.к формула прописана в 44фз.
При этом, ЕИС Госзакупок при внесении туда данных из таблицы, почему то считает именно так  =H9*D9
Вот поэтому, и пытались допилить «округление» данной формулы под нужные нам значения.

Excel для бухгалтера: исправление ошибки округления

Бухгалтеры (и не только) знают одну «нехорошую» особенность Excel – «неумение» правильно суммировать. ? Иногда это приводит к казусам в бухгалтерских документах, сформированных в Excel (рис. 1)

Рис. 1. Фрагмент счет-фактуры с «неверным» суммированием

Скачать заметку в формате Word, примеры в формате Excel

Видно, что общий итог по налогу (значение в ячейке G7) и стоимости товаров (Н7) отличаются на копейку от суммы по строкам (G4:G6 и Н4:Н6, соответственно). Это ошибка является следствием округления. Дело в том, что значения только отображаются в формате с двумя десятичными знаками. Фактические значения в этих ячейках содержат больше десятичных знаков (рис. 2). Excel суммирует не отображаемые значения, а фактические.

Рис. 2. Тот же счет-фактура с большим числом знаков после запятой

Чтобы значение в ячейке G7 равнялось сумме отображаемых значений в ячейках G4:G6, можно применить формулу массива, проводящую округление значений до двух десятичных знаков перед суммированием: <=СУММ(ОКРУГЛ(G4:G6;2))>(рис. 3). [1]

Рис. 3. «Правильное» суммирование с использованием формулы массива

Чуть подробнее, как работает эта формула. Excel формирует виртуальный массив (в памяти компьютера), состоящий из трех элементов: ОКРУГЛ(G4;2), ОКРУГЛ(G5;2), ОКРУГЛ(G6;2), то есть значений в ячейках G4:G6, округленных до двух десятичных знаков, а затем суммирует эти три элемента. Вуаля! ?

Ошибки округления можно также исключить, применив функцию ОКРУГЛ в каждой из ячеек диапазона G4:G6. Этот прием не требует применения формулы массива, однако требует многократного использования функции ОКРУГЛ. Вам судить, что проще!

[1] Идея подсмотрена в книге Джона Уокенбаха «MS Excel 2007. Библия пользователя». Если вы не использовали ранее формулы массива, рекомендую начать с заметки Excel. Введение в формулы массива .

Что делать, если Эксель не считает или неверно считает сумму

Приложение Эксель используют не только для создания таблиц. Его главным предназначением является расчет чисел по формулам. Достаточно вписать в ячейки новые значения и система автоматически пересчитает их. Однако, в некоторых случаях расчет не происходит. Тогда, необходимо выяснить, почему Эксель не считает сумму.

Основные причины неисправности

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

Изменяем формат ячеек

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

Чтобы проверить, действительно ли дело в формате, следует перейти во вкладку «Главная». Предварительно, необходимо выбрать непроверенную ячейку. В этой вкладке находится информация о формате.

Если его нужно изменить, достаточно нажать на стрелочку и выбрать требуемый из списка. После этого, система произведет новый расчет.

Список форматов в данном разделе полный, но без описаний и параметров. Поэтому в некоторых случаях пользователь не может найти нужный. Тогда, лучше воспользоваться другим методом. Так же, как и в первом варианте, следует выбрать ячейку. После этого кликнуть правой клавишей мыши и открыть команду «Формат ячеек».

В открытом окне находится полный список форматов с описанием и настройками. Достаточно выбрать нужный и нажать на «ОК».

Отключаем режим «Показать формулы»

Иногда пользователь может заметить, что вместо числа отображено само вычисление и формула в ячейке не считается. Тогда, нужно отключить данный режим. После этого система будет выводить готовый результат расчета, а не выражения.

Для отключения функции «Показать формулы», следует перейти в соответствующий раздел «Формулы». Здесь находится окно «Зависимости». Именно в нем расположена требуемая команда. Чтобы отобразить список всех зависимостей, следует кликнуть на стрелочке. Из перечня необходимо выбрать «Показать» и отключить данный режим, если он активен.

Ошибки в синтаксисе

Часто, неправильное отображение результата является следствием ошибок синтаксиса. Такое случается, если пользователь вводил вычисление самостоятельно и не прибегал к помощи встроенного мастера. Тогда, все ячейки с ошибками не будут выдавать расчет.

В таком случае, следует проверить правильное написание каждой ячейки, которая выдает неверный результат. Можно переписать все значения, воспользовавшись встроенным мастером.

Включаем пересчет формулы

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

В открытом окне необходимо перейти во вкладку «Формулы». Здесь находятся параметры вычислений. Достаточно установить флажок на пункте «Автоматически» и сохранить изменения, чтобы система начала проводить перерасчет.

Ошибка в формуле

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

Для того, чтобы перепроверить синтаксис и исправить ошибку, следует перейти в раздел «Формулы». В зависимостях находится команда, которая отвечает за вычисления.

Откроется окно, которое отображает саму формулу. Здесь, следует нажать на «Вычислить», чтобы провести проверку ошибки.

Другие ошибки

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

Формула не растягивается

Растягивание необходимо в том случае, когда несколько ячеек должны проводить одинаковые вычисления с разными значениями. Но бывает, что этого не происходит автоматически. Тогда, следует проверить, что установлена функция автоматического заполнения, которая расположена в параметрах.

Кроме того, рекомендуется повторить действия для растягивания. Возможно, ошибка была в неправильной последовательности.

Неверно считается сумма ячеек

Сумма также считается неверно, если в книге находятся скрытые ячейки. Их пользователь не видит, но система проводит расчет. В итоге, программа отображает одно значение, а реальная сумма должна быть другой.

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

Формула не считается автоматически

Эксель не будет считать формулу автоматически, если данная функция отключена в настройках. Пользователь может устранить данную проблему, если перейдет в параметры, которые находятся в разделе «Файл».

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

В excel неправильно считает сумму

Всем привет. Возникла проблема с Excel’ем — при подсчете значений в столбце получается сумма, отличной от сложенной вручную на калькуляторе. В изображении ниже сумма должна получатся 83,35, но Excel почему-то суммирует это до 83,3, хотя и стоит опция, чтобы было 2 знака после запятой. Что сделать так, чтобы сумма считалась нормально? Использование СУММПРОИЗВ эффекта не дало. ОС Windows 7 X32, Excel 2010.

Так же помните что два знака после запятой — это только при выводе на экран. Число в ячейке может иметь больше знаков и фактически быть как больше так и меньше показаного округленного значения.

Например, число 1.185 будет показано как 1.19, но при сложении будет использовано именно 1.185.

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

This posting is provided «AS IS» with no warranties, and confers no rights.

  • Помечено в качестве ответа Жук MVP, Moderator 7 сентября 2015 г. 22:45

Так как ввод данных и формулы расчёта зависит от Вас, то можно сказать однозначно, что не правильно считаете Вы 😉 :))

Правильнее, разместить Ваш файл-пример руководствуясь разделом Q9 справки, в общедоступной папке бесплатного хранилища OneDrive и ссылку на папку с файлом-примером, вставить в своё сообщение:

83,35

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено Жук MVP, Moderator 5 сентября 2015 г. 0:04
  • Помечено в качестве ответа Жук MVP, Moderator 5 сентября 2015 г. 0:57

Все ответы

Промежуточные суммы посчитайте — это мопомет найти «битую» ячейку

Так же помните что два знака после запятой — это только при выводе на экран. Число в ячейке может иметь больше знаков и фактически быть как больше так и меньше показаного округленного значения.

Например, число 1.185 будет показано как 1.19, но при сложении будет использовано именно 1.185.

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

This posting is provided «AS IS» with no warranties, and confers no rights.

  • Помечено в качестве ответа Жук MVP, Moderator 7 сентября 2015 г. 22:45

Так как ввод данных и формулы расчёта зависит от Вас, то можно сказать однозначно, что не правильно считаете Вы 😉 :))

Правильнее, разместить Ваш файл-пример руководствуясь разделом Q9 справки, в общедоступной папке бесплатного хранилища OneDrive и ссылку на папку с файлом-примером, вставить в своё сообщение:

83,35

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено Жук MVP, Moderator 5 сентября 2015 г. 0:04
  • Помечено в качестве ответа Жук MVP, Moderator 5 сентября 2015 г. 0:57

Судя по Вашему вопросу, Вы не загружали Ваш файл-пример, ссылку на который Вам дал в предыдущем сообщении. Загрузите по ссылке данный Вам, файл-пример.

Формула суммирования =СУММ(A1:A35)

Да, я Жук, три пары лапок и фасеточные глаза :))

  • Изменено Жук MVP, Moderator 7 сентября 2015 г. 9:41

Так же помните что два знака после запятой — это только при выводе на экран. Число в ячейке может иметь больше знаков и фактически быть как больше так и меньше показаного округленного значения.

Например, число 1.185 будет показано как 1.19, но при сложении будет использовано именно 1.185.

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

This posting is provided «AS IS» with no warranties, and confers no rights.

:))) я помница лет 10 назад битых 3 часа пытался обьяснить похожую ситуацию начальнице финотдела в банке, когда она с калькулятором в руке пересчитывала значения за экслем.

Excel неправильно считает. Почему?

Часто при вычислении разницы двух ячеек в Excel можно видеть, что она не равна нулю, хотя числа одинаковые. Например, в ячейках A1 и B1 записано одно и тоже число 10,7 , а в C1 мы вычитаем из одного другое:

И самое странное то, что в итоге мы не получаем 0! Почему?

Причина очевидная — формат ячеек
Сначала самый очевидный ответ: если идет сравнение значений двух ячеек, то необходимо убедиться, что числа там действительно равны и не округлены форматом ячеек. Например, если взять те же числа из примера выше, то если выделить их -правая кнопка мыши —Формат ячеек (Format cells) -вкладка Число (Number) -выбираем формат Числовой и выставляем число десятичных разрядов равным 7:

Теперь все становится очевидным — числа отличаются и были просто округлены форматом ячеек. И естественно не могут быть равны. В данном случае оптимальным будет понять почему числа именно такие, а уже потом принимать решение. И если уверены, что числа надо реально округлять до десятых долей — то можно применить в формуле функцию ОКРУГЛ:
=ОКРУГЛ( B1 ;1)-ОКРУГЛ( A1 ;1)=0
=ROUND(B1,1)-ROUND(A1,1)=0
Так же есть более кардинальный метод:

  • Excel 2007:Кнопка офисПараметры Excel (Excel options)Дополнительно (Advanced)Задать точность как на экране (Set precision as displayed)
  • Excel 2010:Файл (File)Параметры (Options)Дополнительно (Advanced)Задать точность как на экране (Set precision as displayed)
  • Excel 2013 и выше:Файл (File)Параметры (Options)Дополнительно (Advanced)Задать указанную точность (Set precision as displayed)

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

Причина программная
Но нередко в Excel можно наблюдать более интересный «феномен»: разница двух дробных чисел, полученная формулой не равна точно такому же числу, записанному напрямую в ячейку. Для примера, запишите в ячейку такую формулу:
=10,8-10,7=0,1
по виду результатом должен быть ответ ИСТИНА (TRUE) . Но по факту будет ЛОЖЬ (FALSE) . И этот пример не единственный — такое поведение Excel далеко не редкость при вычислениях. Его можно встретить и в менее явной форме — когда вычисления основаны на значении других ячеек, которые тоже в свою очередь вычисляются формулами и т.д. Но причина во всех случаях одна.

Почему с виду одинаковые числа не равны?
Сначала разберемся почему Excel считает приведенное выше выражение ложным. Ведь если вычесть из 10,8 число 10,7 — в любом случае получится 0,1 . Значит где-то по пути что-то пошло не так. Запишем в отдельную ячейку левую часть выражения: =10,8-10,7 . В ячейке появится 0,1 . А теперь выделяем эту ячейку -правая кнопка мыши —Формат ячеек (Format cells) -вкладка Число (Number) -выбираем формат Числовой и выставляем число десятичных разрядов равным 15:

и теперь видно, что на самом деле в ячейке не ровно 0,1 , а 0,100000000000001 . Т.е. в 15 значащем разряде у нас появился «хвостик» в виде лишней единицы.
А теперь будем разбираться откуда этот «хвостик» появился, ведь и логически и математически его там быть не должно. Рассказать я постараюсь очень кратко и без лишних заумностей — их на эту тему при желании можно найти в интернете немало.
Все дело в том, что в те далекие времена(это примерно 1970-е годы), когда ПК был еще чем-то вроде экзотики, не было единого стандарта работы с числами с плавающей запятой(дробных, если по простому). Зачем вообще этот стандарт? Затем, что компьютерные программы видят числа по своему, а дробные так вообще со статусом «все сложно». И при этом одно и то же дробное число можно представить по-разному и обрабатывать операции с ним тоже. Поэтому в те времена одна и та же программа, при работе с числами, могла выдать различный результат на разных ПК. Учесть все возможные подводные камни каждого ПК задача не из простых, поэтому в один прекрасный момент началась разработка единого стандарта для работы с числами с плавающей запятой. Опуская различные подробности, нюансы и интересности самой истории скажу лишь, что в итоге все это вылилось в стандарт IEEE754. А в соответствии с его спецификацией в десятичном представлении любого числа допускаются ошибки в 15-м значащем разряде. Что и приводит к неизбежным ошибкам в вычислениях. Чаще всего это можно наблюдать именно в операциях вычитания, т.к. именно вычитание близких между собой чисел ведет к потере значимых разрядов.
Подробнее про саму спецификацию так же можно узнать в статье Microsoft: Результаты арифметических операций с плавающей точкой в Excel могут быть неточными
Вот это как раз и является виной подобного поведения Excel. Хотя справедливости ради надо отметить, что не только Excel, а всех программ, основанных на данном стандарте. Конечно, напрашивается логичный вопрос: а зачем же приняли такой глючный стандарт? Я бы сказал, что был выбран компромисс между производительностью и функциональностью. Хотя возможно, были и другие причины.

Куда важнее другое: как с этим бороться?
По сути никак, т.к. это программная «ошибка». И в данном случае нет иного выхода, как использовать всякие заплатки вроде ОКРУГЛ и ей подобных функций. При этом ОКРУГЛ здесь надо применять не как в было продемонстрировано в самом начале, а чуть иначе:
=ОКРУГЛ( 10,8 — 10,7 ;1)=0,1
=ROUND(10.8-10.7,1)=0,1
т.е. в ОКРУГЛ мы должны поместить само «глючное» выражение, а не каждый его аргумент отдельно. Если поместить каждый аргумент — то эффекта это не даст, ведь проблема не в самом числе, а в том, как его видит программа. И в данном случае 10,8 и 10,7 уже округлены до одного разряда и понятно, что округление отдельно каждого числа не даст вообще никакого эффекта. Можно, правда, выкрутиться и иначе. Умножить каждое число на некую величину(скажем на 1000, чтобы 100% убрать знаки после запятой) и после этого производить вычитание и сравнение:
=((10,8*1000)-(10,7*1000))/1000=0,1

Хочется верить, что хоть когда-нибудь описанную особенность стандарта IEEE754 Microsoft сможет победить или хотя бы сделать заплатку, которая будет производить простые вычисления не хуже 50-рублевого калькулятора 🙂

Статья помогла? Поделись ссылкой с друзьями!

Компьютер + Интернет + блог = Статьи, приносящие деньги

Забирайте в подарок мой многолетний опыт — книгу «Автопродажи через блог»

Эксель неправильно считает сумму, не вычитает, причины

Я много пишу о работе в программе Еxcel, есть и статья о том, как производить суммирование. Но, после этого ко мне стали поступать вопросы, почему Эксель неправильно считает сумму.

Хочу срезу сказать, что программа не может считать неправильно, за каждой такой ошибкой стоит наша невнимательность.

Причин, по которым вы получаете неверный результат, или вовсе не получаете ничего, достаточно много. Сегодня мы постараемся разобраться со всеми проблемами. Начнём, как обычно, с наиболее распространённых ошибок.

Эксель неправильно считает сумму

Если вы производите вычисления, и вдруг заметили, что ответ неверный — внимательно просмотрите все числовые ячейки.

Ошибки допускаемые при подсчёте:

  • В столбце используют значения нескольких видов: чистые числа и числа с рублями, долларами, евро. Например, 10, 30, 5 руб, $4 и так далее. Или где-то не целые числа, а дробные;
  • В таблице присутствуют скрытые ячейки (строки), которые добавляются к общей сумме;
  • Ошибочная формула. Высока вероятность того, что допущена ошибка при вводе выражения;
  • Ошибка в округлении. Задайте для всех ячеек, содержащих числа, числовой формат с 3 или 4 знаками после запятой;
  • В качестве разделения целого значения используют точку вместо запятой.

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

Эксель отказывается подсчитывать сумму

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

И опять, таки, всё дело в нашей невнимательности или в неверных настройках. А для получения верных расчётов, необходима правильная настройка Excel для финансовых расчётов.

Давайте пройдём по порядку, по всем пунктам.

Текстовые и числовые значения

Часто копируя и вставляя данные из разных источников в программу Эксель, пользователь сталкивается с проблемой в расчётах.

Причина, чаще всего, лежит на поверхности — Эксель воспринимает введённые данные как текст. Переведите все ячейки с цифрами в числовой формат — всё заработает.

Посмотрите внимательно на ячейки с цифрами, если вы заметили в левом верхнем углу треугольник — то это текстовая ячейка.

Соответственно, программа видит текст и не определяет числа. Для того, чтобы это изменить, нужно выделить ячейки с числами.

Появится значок с восклицательным знаком. Клик по нему — преобразовать в число.

Обычно этого достаточно для того, чтобы программа стала работать. Но, если этого не случилось, двигаемся далее.

Автоматический расчёт формул в Excel

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

Пройдите по пути — файл — параметры — формулы — установите галочку — автоматически.

После изменения данной настройки программа подсчитает всё, что вам нужно.

Сумма не совпадает с калькулятором

Опять же, вся проблема в округлении. Например, при подсчёте на калькуляторе, как правило, считаем 2 знака после запятой.

Получается один результат, а в таблице может быть настроено знаков гораздо больше. Получается расчёт точнее, но он не совпадает с «калькуляторным».

Для того, чтобы проверить настройки, откройте формат ячеек. Нажмите на вкладку — число, выбрав числовой формат. Здесь можно указать требуемое число десятичных знаков.

В заключение хочу сказать, что программа Excel никогда не ошибается, ошибаются люди. Иногда всё дело в настройках программы.

Поэтому, если вы заметили, что Эксель неправильно считает сумму, не спеша проверьте всё то, о чём я сегодня написал для вас.

Поиск ошибки в вычислениях

Excel старается облегчить наш труд разными подсказками и авто-подстановками. Если все это выполняется вместе с нашими ожиданиями мы в восторге от этой программы. Но если авто-подстановка является ошибочной мы просто выходим из себя.

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

Ошибки при округлении дробных чисел

Как правильно округлить и суммировать числа в Excel?

Для наглядного примера выявления подобного рода ошибок ведите дробные числа 1,3 и 1,4 так как показано на рисунке, а под ними формулу для суммирования и вычисления результата.

Пример ошибки округления.

Дальше нужно выделить все числа и формулу, чтобы уменьшить разрядность для округления.

Как видите, в результате получаем абсурд: 1+1=3. Никакие форматы здесь не помогут. Решить данный вопрос поможет только функция «ОКРУГЛ». Запишите формулу с функцией так: =ОКРУГЛ(A1;0)+ОКРУГЛ(A2;0)

Функция округл.

Как правильно округлить и суммировать числа в столбце таблицы Excel? Если этих чисел будет целый столбец, то для быстрого получения точных расчетов следует использовать массив функций. Для этого мы введем такую формулу: =СУММ(ОКРУГЛ(A1:A7;0)). После ввода массива функций следует нажимать не «Enter», а комбинацию клавиш Ctrl+Shifi+Enter. В результате Excel сам подставит фигурные скобки «{}» – это значит, что функция выполняется в массиве. Результат вычисления массива функций на картинке:

Массив функций сумм и округл.

Можно пойти еще более рискованным путем, но его применять крайне не рекомендуется! Можно заставить Excel изменять содержимое ячейки в зависимости от ее формата. Для этого следует зайти «Файл»-«Параметры»-«Дополнительно» и в разделе «При пересчете этой книги:» указать «задать точность как на экране». Появиться предупреждение: «Данные будут изменены — точность будет понижена!»

Задать точность как на экране.

Внимание!!! Работая в таком режиме, изменив один раз количество разрядов, уже нельзя вернуть исходные данные обратно. Это путь только в одну сторону. Поэтому лучше его не использовать. А массив функций прекрасно и безопасно справляется с данной задачей.

Здесь мы забегаем вперед, но иногда без этого сложно объяснить решение важных задач.



Пишем в Excel слово ИСТИНА или ЛОЖЬ как текст

Заставить программу воспринимать слова логических типов данных как текст можно двумя способами:

  1. Вначале вписать форматирующий символ.
  2. Изменить формат ячейки на текстовый.

В ячейке А1 реализуем первый способ, а в А2 – второй.

Задание 1. В ячейку А1 введите слово с форматирующим символом так: «’истина». Обязательно следует поставить в начале слова символ апострофа «’», который можно ввести с английской раскладки клавиатуры (в русской раскладке символа апострофа нет). Тогда Excel скроет первый символ и будет воспринимать слова «истина» как текст, а не логический тип данных.

Задание 2. Перейдите на ячейку А2 и вызовите диалоговое окно «Формат ячеек». Например, с помощью комбинации клавиш CTRL+1 или контекстным меню правой кнопкой мышки. На вкладке «Число» в списке числовых форматов выберите «текстовый» и нажмите ОК. После чего введите в ячейку А2 слово «истина».

Задание 3. Для сравнения напишите тоже слово в ячейке А3 без апострофа и изменений форматов.

Истина как текст.

Как видите, апостроф виден только в строке формул.

Примечание. В ячейках А1 и А2 символы текста не были сменены на большие, а значит не была выполнена авто-подстановка, потому что слово воспринято программой как текст.

Отображение формул

Заполните данными ячейки, так как показано ниже на рисунке:

Формула как текст.

Обычно комбинация символов набранных в B3 должна быть воспринята как формула и автоматически выполнен расчет. Но что если нам нужно записать текст именно таким способом и мы не желаем вычислять результат? Решить данную задачу можно аналогичным способом из примера описанного выше.

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

Даже
если предположить, что исходная информация
не содержит никаких ошибок и все
вычислительные процессы конечны и не
приводят к ошибкам ограничения, то все
равно в этом случае присутствует третий
тип ошибок – ошибки округления.
Предположим, что вычисления производятся
на машине, в которой каждое число
представляется 5-ю значащими цифрами,
и что необходимо сложить два числа
9.2654 и 7.1625, причем эти два числа являются
точными. Сумма их равна 16.4279, она содержит
6 значащих цифр и не помещается в разрядной
сетке нашей гипотетической машины.
Поэтому 6-значный результат будет
округлен
до 16.428, и при этом возникает ошибка
округления
.
Так как компьютеры всегда работают с
конечным числом значащих цифр, то
потребность в округлении возникает
довольно часто.

Вопросы
округления относятся только к
действительным числам. При выполнении
операций с целыми числами потребность
в округлении не возникает. Сумма, разность
и произведение целых чисел сами являются
целыми числами; если результат слишком
велик, то это свидетельствует об ошибке
в программе. Частное от деления двух
целых чисел не всегда является целым
числом, но при делении целых чисел
дробная часть отбрасывается.

Абсолютная и относительная погрешности

Допустим,
что точная ширина стола – А=384 мм, а мы,
измерив ее, получили а=381 мм. Модуль
разности между точным значением
измеряемой величины и ее приближенным
значением называется абсолютной
погрешностью

.
В данном примере абсолютная погрешность
3 мм. Но на практике мы никогда не знаем
точного значения измеряемой величины,
поэтому не можем точно знать абсолютную
погрешность.

Но
обычно мы знаем точность измерительных
приборов, опыт наблюдателя, производящего
измерения и т.д. Это дает возможность
составить представление об абсолютной
погрешности измерения. Если, например,
мы рулеткой измеряем длину комнаты, то
нам нетрудно учесть метры и сантиметры,
но вряд ли мы сможем учесть миллиметры.
Да в этом и нет надобности. Поэтому мы
сознательно допускаем ошибку в пределах
1 см. абсолютная погрешность длины
комнаты меньше 1 см. Измеряя длину
какого-либо отрезка миллиметровой
линейкой, мы имеем право утверждать,
что погрешность измерения не превышает
1 мм.

Абсолютная
погрешность а
приближенного числа а дает возможность
установить границы, в которых лежит
точное число А:

Абсолютная
погрешность не является достаточным
показателем качества измерения и не
характеризует точность вычислений или
измерений. Если известно, что, измерив
некоторую длину, мы получили абсолютную
погрешность в 1 см, то никаких заключений
о том, хорошо или плохо мы измеряли,
сделать нельзя. Если мы измеряли длину
карандаша в 15 см и ошиблись на 1 см, наше
измерение никуда не годится. Если же мы
измеряли 20-метровый коридор и ошиблись
всего на 1 см, то наше измерение – образец
точности. Важна
не только сама абсолютная погрешность,
но и та доля, которую она составляет от
измеренной величины
.
В первом примере абс. погрешность 1 см
составляет 1/15 долю измеряемой величины
или 7%, во втором – 1/2000 или 0.05%. Второе
измерение значительно лучше.

Относительной
погрешностью называют отношение
абсолютной погрешности к абсолютному
значению приближенной величины:

.

В
отличие от абсолютной погрешности,
которая обычно есть величина размерная,
относительная погрешность всегда есть
величина безразмерная. Обычно ее выражают
в %.

Пример

При измерении
длины в 5 см допущена абсолютная
погрешность в 0.1 см. Какова относительная
погрешность? (Ответ 2%)

При
подсчете числа жителей города, которое
оказалось равным 2
000
000,
допущена
погрешность 100 человек. Какова относительная
погрешность? (Ответ
0.005%)

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

Например,
если записано 12.45, то это не значит, что
величина, характеризуемая этим числом,
не содержит тысячных долей. Можно
утверждать, что тысячные доли при
измерении не учитывались, следовательно,
абсолютная погрешность меньше половины
единицы последнего разряда:
.
Аналогично, относительно приближенного
числа 1.283, можно сказать, что абсолютная
погрешность меньше 0.0005:.

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

Как же
быть, если при тщательном измерении
какой-нибудь величины получится, что
она содержит целую единицу, 2 десятых,
5 сотых, не содержит тысячных, а
десятитысячные не поддаются учету? Если
записать 1.25, то в этой записи тысячные
не учтены, тогда как на самом деле мы
уверены, что их нет. В таком случае
принято ставить на их месте 0, – надо
писать 1.250. Таким образом, числа 1.25 и
1.250 обозначают не одно и то же. Первое –
содержит тысячные; мы только не знаем,
сколько именно. Второе – тысячных не
содержит, о десятитысячных ничего
сказать нельзя.

Сложнее
приходится при записи больших приближенных
чисел. Пусть число жителей деревни равно
2000 человек, а в городе приблизительно
457
000
жителей. Причем относительно города в
тысячах мы уверены, но допускаем
погрешность в сотнях и десятках. В первом
случае нули в конце числа указывают на
отсутствие сотен, десятков и единиц,
такие нули мы назовем значащими;
во втором случае нули указывают на наше
незнание числа сотен, десятков и единиц.
Такие нули мы назовем незначащими.
При записи приближенного числа,
содержащего нули надо дополнительно
оговаривать их значимость. Обычно нули
– незначащие. Иногда на незначимость
нулей можно указывать, записывая число
в экспоненциальном виде (457*103).

Сравним
точность двух приближенных чисел 1362.3
и 2.37. В первом абсолютная погрешность
не превосходит 0.1, во втором – 0.01. Поэтому
второе число выглядит более точным, чем
первое.

Подсчитаем
относительную погрешность. Для первого
числа
;
для второго.
Второе число значительно (почти в 100
раз) менее точно, чем первое. Получается
это потому, что в первом числе дано 5
верных (значащих) цифр, тогда как во
втором – только 3.

Все
цифры приближенного числа, в которых
мы уверены, будем называть верными
(значащими) цифрами. Нули сразу справа
после запятой не бывают значащими, они
лишь указывают на порядок стоящих правее
значащих цифр. Нули в крайних правых
позициях числа могут быть как значащими,
так и не значащими. Например, каждое из
следующих чисел имеет 3 значащие цифры:
283*105,
200*102,
22.5, 0.0811, 2.10, 0.0000458.

Пример

Сколько
значащих (верных) цифр в следующих
числах:

0.75
(2), 12.050 (5), 1875*105
(4), 0.06*109
(1)

Оценить
относительную погрешность следующих
приближенных чисел:

0.989
(0.1%),

нули
значащие: 21000 (0.005%),

0.000
024
(4%),

0.05 (20%)

Нетрудно
заметить, что для примерной оценки
относительной погрешности числа
достаточно подсчитать количество
значащих цифр. Для числа, имеющего только
одну значащую цифру относительная
погрешность около 10%;

с
2-мя значащими цифрами – 1%;

с
3-мя значащими цифрами – 0.1%;

с
4-мя значащими цифрами – 0.01% и т.д.

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

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

округление
до десятых 27.136 
27.1,

округление
до целых 32.8 
33.

Правило
округления: Если крайняя левая из
отбрасываемых при округлении цифр
меньше 5, то последнюю сохраняемую цифру
не изменяют; если крайняя левая из
отбрасываемых цифр больше 5 или если
она равна 5, то последнюю сохраняемую
цифру увеличивают на 1.

Пример

округлить
до десятых 17.96 (18.0)

округлить
до сотых 14.127 (14.13)

округлить,
сохранив 3 верные цифры: 83.501 (83.5), 728.21
(728), 0.0168835 (0.01688).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Ошибка в сумме при заполнения
  • Ошибка в строке 1 свойства непрозрачность
  • Ошибка в сумме c a при вводе
  • Ошибка в сумме перечисленного ндфл
  • Ошибка в строке 1 на символе 1