Ошибка в таблице при запятой

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

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

Если Excel считает некорректно числа после запятой

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

На готовом примере продемонстрируем следующие расчеты.

  1. Заполните исходную табличку как показано на рисунке:
  2. В ячейках B и C задайте финансовый формат (CTRL+1 «Формат ячеек»-«Число»-«Финансовый»).
  3. В ячейку C1 запишите то, что отображается в ячейке B1 (1,53 – результат после округления до двух знаков после запятой). Так же само введите число в C2 как отображено в B2 (символы валют не проставляем, так как они преставятся автоматически благодаря финансовому формату).
  4. В третьей строке просуммируем значение каждой колонки таблички.

Ошибки при округлении форматами ячеек.

Как видите точность расчета знаков после запятой в Excel, может отличаться. Форматирование в реальности не округляет числовые значения в ячейках. Они остаются те же и реальными отображаются в строке формул.

Отображение истинных значений в строке формул.

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

  • =ОКРУГЛ;
  • =ОКРУГЛВВЕРХ;
  • =ОКРУГЛВНИЗ;
  • =ЦЕЛОЕ (функция позволяет в Excel округлить до большего целого).

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



Автоматическая вставка десятичной запятой

Автоматический фильтр форматов рассчитан на упрощение работы с программой, особенно если научится им управлять. Очень часто нам приходится поставить запятую при вводе денежных сумм для отображения копеек. Десятичный разделитель запятая в Excel может проставлятся автоматически при заполнении финансовых данных в денежном эквиваленте. Для этого:

  1. Откройте окно «Фай»-«Параметры».
  2. В окне «Параметр Excel» перейдите на «Дополнительно»-«Параметры правки» и отметьте галочкой пункт «Автоматическая вставка десятичной запятой». Число знаков после разделителя пусть останется «2». Теперь проверим результат.
  3. Параметры правки.

  4. В ячейку A1 введите 1234 и нажмите «Enter», в результате мы видим 12,34 как на рисунке:

Автоматическая вставка запятой.

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

Стоит отметить, что если в сумме 00 копеек, то знаки после запятой в Excel нужно вводить обязательно. Иначе может получиться так 0,01 или 0,2.

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

Запятая добавлена вручную.

То есть количество знаков после запятой можно изменить или перенести саму запятую.

После заполнения сумм с копейками не забудьте отключить эту функцию.

Обновлено: 09.06.2023

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

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

Если Excel считает некорректно числа после запятой

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

На готовом примере продемонстрируем следующие расчеты.

  1. Заполните исходную табличку как показано на рисунке:
  2. В ячейках B и C задайте финансовый формат (CTRL+1 «Формат ячеек»-«Число»-«Финансовый»).
  3. В ячейку C1 запишите то, что отображается в ячейке B1 ( 1,53 – результат после округления до двух знаков после запятой ). Так же само введите число в C2 как отображено в B2 ( символы валют не проставляем, так как они преставятся автоматически благодаря финансовому формату ).
  4. В третьей строке просуммируем значение каждой колонки таблички.

Как видите точность расчета знаков после запятой в Excel, может отличаться. Форматирование в реальности не округляет числовые значения в ячейках. Они остаются те же и реальными отображаются в строке формул.

Отображение истинных значений в строке формул.

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

  • =ОКРУГЛ;
  • =ОКРУГЛВВЕРХ;
  • =ОКРУГЛВНИЗ;
  • =ЦЕЛОЕ ( функция позволяет в Excel округлить до большего целого ).

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

Автоматическая вставка десятичной запятой

Автоматический фильтр форматов рассчитан на упрощение работы с программой, особенно если научится им управлять. Очень часто нам приходится поставить запятую при вводе денежных сумм для отображения копеек. Десятичный разделитель запятая в Excel может проставлятся автоматически при заполнении финансовых данных в денежном эквиваленте. Для этого:

Параметры правки.

  1. Откройте окно «Фай»-«Параметры».
  2. В окне «Параметр Excel» перейдите на «Дополнительно»-«Параметры правки» и отметьте галочкой пункт «Автоматическая вставка десятичной запятой». Число знаков после разделителя пусть останется «2». Теперь проверим результат.
  3. В ячейку A1 введите 1234 и нажмите «Enter», в результате мы видим 12,34 как на рисунке:

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

Стоит отметить, что если в сумме 00 копеек, то знаки после запятой в Excel нужно вводить обязательно. Иначе может получиться так 0,01 или 0,2.

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

Запятая добавлена вручную.

То есть количество знаков после запятой можно изменить или перенести саму запятую.

В Экселе не отображается ноль? Войдите в «Файл», а далее «Параметры», зайдите в «Дополнительно» и в группе «Показать параметры следующего листа» выберите лист и поставьте отметку в поле «Показывать нули в ячейках, которые содержать нулевые значения». Ниже подробно рассмотрим, почему в Excel не отображается 0, и как внести изменения в программы для разных версий.

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

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

Ноль не отображается в новых версиях

В ситуации, когда не ставится 0 в Excel новых версий (после 2010-го), сделайте следующие шаги:

  • Войдите в «Файл», а далее «Параметры».
  • Кликните на пункт «Дополнительно».

  • Найдите группу «Показать параметры для следующего листа» и войдите сюда.
  • Поставьте флажок в поле «Показывать нули в ячейках, которые содержат нулевые значения».

Для отображение скрытых значений в выделенных секциях, сделайте следующее:

  • Выделите секцию с 0-ыми параметрами.
  • Жмите на кнопку Ctrl+1.
  • На вкладке «Главная» жмите «Формат», а после «Формат ячеек».

  • Выберите «Число», а после «Общий».
  • Жмите ОК.

Если в Эксель не отображается 0 в выделенной секции, сделайте следующее:

  1. Выделите ячейки, не отображается нужное число.
  2. Войдите в раздел «Главная», а далее «Формат» и «Формат ячеек».
  3. Жмите на кнопку «Число» и «Все форматы».
  4. В поле «Тип» удалите запись 0;-0;;@ и сохраните данные.

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

  1. Выделите ячейку с 0.
  2. В разделе «Главная» жмите на стрелку возле «Условное форматирование».
  3. Слева введите 0.
  4. Справа выберите «Пользовательский …».
  5. В поле «Формат ячейки» откройте «Шрифт».
  6. В поле «Цвет» укажите обычный черный и кликните «ОК».

Одна из причин, почему в Экселе не пишется 0 в отчетной таблице — внесение соответствующих данных. Для исправления сделайте следующее:

  1. Войдите в отчет.
  2. На вкладке «Анализ» в группе «Сводная таблица» жмите на стрелку возле «Параметры» и выберите соответствующий пункт.
  3. Войдите на вкладку «Разметка и формат».
  4. В поле формат «Для ошибок отображать» уберите отметку. Это же сделайте в отношении поля «Для пустых ячеек отображать».

Если все равно не пишется ноль в Экселе, убедитесь в правильности действий. В дальнейшем по желанию можно вернуть настройки и скрыть 0-ые значения, возвращенные формулой, заменить эту цифру тире или пробелами, брать ноль в отчете сводной таблицы и т. д.

Не отображается ноль в Excel 2010

В ситуации, когда не пишет 0 в Экселе 2010, можно воспользоваться той же инструкцией, что рассмотрена выше. Для этого зайдите в «Файл» и «Параметры», а после «Дополнительно». На следующем шаге зайдите в группу «Показать параметры для следующего листа» и установите пункт, предусматривающий включение 0. Если ноль не ставится в Экселе из-за этих настроек, указанные шаги должны дать результат.

Если ноль не отображается в выделенных секциях, сделайте следующее:

  • Выделите нужные участник, где нет 0.
  • Войдите в «Главная» и жмите «Формат», а после «Формат ячеек».

Для отображения 0-ых значений, указанных формулой, сделайте следующее:

  • Выберите ячейку в Экселе, где не отображается ноль.
  • В разделе «Главная» в группе «Стили» жмите на стрелку возле «Условное форматирование».
  • Наведите указатель на «Правила выделения …».
  • Выберите «Равно» и слева введите 0.
  • Справа укажите «Пользовательский формат».
  • В «Формат ячеек» выберите «Шрифт».
  • В поле «Цвет» укажите черный.

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

Ноль не отображается в Эксель 2007

В ситуации с программой 2007 года вопрос, почему 0 не ставится в Эксель, имеет схожие ответы и решения.

Если ноль вообще не отображается на листе, сделайте следующее:

  1. Жмите на кнопку Майкрософт Офис.
  2. Войдите в параметры, а потом «Дополнительные параметры».
  3. Кликните «Показать параметры для следующего листа».
  4. Поставьте отметку в поле «Показывать нули в ячейка, которые содержат …».

В случае, когда ноль не отображается в выделенных секциях (он был скрыт настройками), сделайте следующее:

  1. Выделите нужную часть.
  2. Зайдите в раздел «Главная», а после этого «Ячейки».
  3. Наведите указатель на «Формат» и выберите «Формат ячеек».
  4. В списке «Категория» выберите «Общий.

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

Если нулевое значение не отображается в сводной таблице Excel, здесь также применима инструкция, которая рассмотрена для 2010-й версии.

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

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

Первый способ. Убираем цифры после запятой визуально.

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

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

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

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

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

Второй способ. Убираем реально цифры после запятой, используя функцию округлить. Работу проводим с таблицей из первого способа.

Первый шаг. В ячейки D2 пишем формулу, которое округлить значение: =ОКРУГЛ(C2;0).

Второй шаг. Выделяем ячейку D2, нажимаем сочетание клавиш «Ctrl+C», а затем выделяем диапазон ячеек с D3 по D6. После чего жмем «Ctrl+V».

Третий шаг. Выделяем диапазон ячеек с D2 по D6 и жмем «Ctrl+C». Затем выделяем диапазон с С2 по С6. Наводим курсор на выделенную область и жмем правую кнопку мыши, где из появившегося меню выбираем: «Специальная ставка».

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

Пятый шаг. В столбце «Результат» теперь цифры без чисел после запятой.

Шестой шаг. Удаляем все значения из столбца «С». Получаем теперь таблицу с цифрами, которые реально не имеют знаков после запятой.

При введите номер, содержащий более 15 цифр в ячейке в Microsoft Excel, Excel любые цифры за пятнадцатым местом на нули. Например, введите номер удостоверения кредитной карты в следующем формате:

В этой ситуации Excel последнюю цифру на ноль.

Причина

Excel спецификации IEEE 754 для хранения и вычисления номеров с плавающей точкой. Excel сохраняет только 15 значимых цифр в номере и изменяет цифры после пятнадцатого места в ноль

Обходной путь

Добавление кавычка

Чтобы не изменить цифры на ноль, введите одну кавычка перед вводом номера.

Для этого выберите пустую ячейку, введите одну кавычка (‘), а затем введите номер. Все цифры отображаются в ячейке.

Введите одну кавычка и введите номер.

Формат ячеек

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

Выберите все затронутые ячейки и нажмите кнопку Ctrl+1, чтобы открыть диалоговое окно Format Cells.

На вкладке Номер выберите Текст из списка Категорий и выберите ОК.

Выберите Текст в вкладке Номер в диалоговом окне "Ячейки формата".

Дополнительные сведения

Такое поведение происходит только в том случае, если ячейка отформатирована как Номер, а число, в которое вошел, превышает 15 цифр. Для ячеек, форматированные в виде текста, можно ввести до 32 767 символов. Excel на таблице отображается до 1024 символов.

Так как настраиваемые форматы номеров предназначены для работы в основном с числами, невозможно создать настраиваемый формат номеров, который хранит более 15 цифр. Например, нельзя использовать следующий формат для хранения 16-символьного удостоверения кредитной карты в виде номера:

Однако, если ввести номер в ячейке, которая форматирована как текст, все символы остаются как вы введите их, так как Excel сохраняет номер в виде текста, а не как номер.

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

Первый способ. Убираем цифры после запятой визуально.

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

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

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

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

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

Второй способ. Убираем реально цифры после запятой, используя функцию округлить. Работу проводим с таблицей из первого способа.

Первый шаг. В ячейки D2 пишем формулу, которое округлить значение: =ОКРУГЛ(C2;0).

Второй шаг. Выделяем ячейку D2, нажимаем сочетание клавиш «Ctrl+C», а затем выделяем диапазон ячеек с D3 по D6. После чего жмем «Ctrl+V».

Третий шаг. Выделяем диапазон ячеек с D2 по D6 и жмем «Ctrl+C». Затем выделяем диапазон с С2 по С6. Наводим курсор на выделенную область и жмем правую кнопку мыши, где из появившегося меню выбираем: «Специальная ставка».

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

Пятый шаг. В столбце «Результат» теперь цифры без чисел после запятой.

Шестой шаг. Удаляем все значения из столбца «С». Получаем теперь таблицу с цифрами, которые реально не имеют знаков после запятой.

Читайте также:

      

  • Рейтинг компьютерных игр 2021
  •   

  • Может ли бортовой компьютер разрядить аккумулятор
  •   

  • Опишите принципы компьютерного моделирования
  •   

  • Фильтровать по значению касперский
  •   

  • Не загружает файлы xiaomi

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Здравствуйте! Считаем сумму отклонений от средней. В любом случае должен быть нуль. Но все-таки: средняя с одним знаком после запятой, числа вообще целые. В сумме после 14 знака после запятой появляется штук 15 цифр. Если результат формулы разности записать вручную числом, то глюк исчезает, в сумме ровно 0. Пробовали с этими числами это проделывать с двух разных компьютеров, ничего не меняется. Если набрать рандомные числа и посчитать для них — все нормально, ровно нуль. Если взять задание другого варианта (лист 2) — для одного столбца все нормально, а у другого то же самое, только в одной из разностей получается длинная дробь. Но дальше еще интереснее. Ввожу вручную в произвольную ячейку =14-13,8 и получаю 0,1999999999.
Работаю с экселем каждый день, первый раз вижу такие чудеса. Пробовала переустанавливать эксель. Все осталось как было. Привлекла человека с другим компом — то же самое. Пробовала числа не копировать из задания, а набирать вручную, никакой разницы.
Что с этим можно сделать?
Можно ли подцепить какую-нибудь фигню от вордовского файла с заданием? Ровно до того момента, как скопировала с него таблицу, проблем не было. На другой комп его тоже отправляла.

К сообщению приложен файл:

6072879.xlsx
(11.5 Kb)

Сообщение отредактировал ВолшебникСуббота, 12.04.2014, 02:51

На чтение 1 мин Опубликовано 31.07.2015

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

  1. К примеру, взгляните на формулы, приведенные на рисунке ниже. На первый взгляд все выглядит хорошо.

    Плавающая запятая в Excel

  2. Однако, если мы отобразим 16 десятичных знаков, то увидим, что один из результатов – это очень приближенное значение.

    Плавающая запятая в Excel

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

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

    =IF(C8>=0.1,"Yes","No")
    =ЕСЛИ(C8>=0,1;"Yes";"No")

    Плавающая запятая в Excel

  4. Используйте функцию ROUND (ОКРУГЛ), чтобы исправить это.

    =IF(ROUND(C8,1)>=0.1,"Yes","No")
    =ЕСЛИ(ОКРУГЛ(C8;1)>=0,1;"Yes";"No")

    Плавающая запятая в Excel

Оцените качество статьи. Нам важно ваше мнение:

Хитрости »

18 Март 2018              138735 просмотров


Часто при вычислении разницы двух ячеек в Excel можно видеть, что она не равна нулю, хотя числа одинаковые. Например, в ячейках A1 и B1 записано одно и тоже число 10,7, а в C1 мы вычитаем из одного другое:
Разность чисел
И самое странное то, что в итоге мы не получаем 0! Почему?
И еще одна ситуация — я её называю «Куда пропала копейка?!». На скрине ниже изображена достаточно частая ситуация в Excel:
Откуда лишняя копейка?
Слева числа получены формулами и сложены в единую сумму при помощи функции СУММ(SUM), а правее они же посчитаны на калькуляторе. Как видно — суммы различаются на копейку. На самом деле различаться суммы в итоге могут и более чем на копейку.

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

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

Но как быть, если таких формул десять, двадцать и более? Не прописывать же вручную для каждой формулу ОКРУГЛ. Можно использовать одну из функций моей надстройки MulTEx, которая двумя кликами мыши все сделает за вас. Достаточно будет выделить все ячейки с «неверными» числами, которые надо округлить, перейти на вкладку MulTEx -группа Ячейки/ДиапазоныЯчейкиФункции и выбрать Округлить(см. подробное описание функции). Указать количество знаков 2 и все. Там, где были формулы, будет добавлена функция ОКРУГЛ, а где реальные числа — будет произведено округление.

Но есть и более кардинальный метод, если сторонние утилиты и надстройки использовать нельзя или нет желания:

  • 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:
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 уже округлены до одного разряда и понятно, что округление отдельно каждого числа не даст вообще никакого эффекта. Здесь и еще один нюанс — вполне достаточно, зная эту особенность, округлить до 14 знаков и проблема тоже исчезнет. В чем здесь плюс — как правило очень мало задач для решения требуют 15 знаков после запятой и этот 15-ый можно просто «игнорировать», но при этом не убирать более значимые разряды(ведь не всегда известно до какого разряда можно округлять без потерь):
=ОКРУГЛ(10,8-10,7;14)=0,1
=ROUND(10.8-10.7,14)=0,1

Можно, правда, выкрутиться и иначе. Умножить каждое число на некую величину(скажем на 1000, чтобы 100% убрать знаки после запятой) и после этого производить вычитание и сравнение:
=((10,8*1000)-(10,7*1000))/1000=0,1


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


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

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Понравилась статья? Поделить с друзьями:
  • Ошибка в таблице пользователи pervasive sql 3106 операция 0
  • Ошибка в таблице пользователи pervasive sql 3016 операция 0
  • Ошибка в таблице пользователи pervasive sql 161 операция 0
  • Ошибка в таблице не обнаружена страница
  • Ошибка в таблице внешние документы сбис