Как исправить ошибку деление на ноль

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel для iPad Excel Web App Excel для iPhone Excel для планшетов с Android Excel 2010 Excel 2007 Excel для Mac 2011 Excel для телефонов с Android Excel для Windows Phone 10 Excel Mobile Excel Starter 2010 Еще…Меньше

Ошибка #ДЕЛ/0! возникает в Microsoft Excel, когда число делится на ноль (0). Это происходит, если вы вводите простую формулу, например =5/0, или если формула ссылается на ячейку с 0 или пустую ячейку, как показано на этом рисунке.

Примеры формул, вызывающих #DIV/0! исчезнут.

Есть несколько способов исправления этой ошибки.

  • Убедитесь в том, что делитель в функции или формуле не равен нулю и соответствующая ячейка не пуста.

  • Измените ссылку в формуле, чтобы она указывала на ячейку, не содержащую ноль (0) или пустое значение.

  • Введите в ячейку, которая используется в формуле в качестве делителя, значение #Н/Д, чтобы изменить результат формулы на #Н/Д, указывая на недоступность делителя.

Во многих случаях #DIV/0! из-за того, что формулы ожидают ввода от вас или другого пользователя. В этом случае вы не хотите, чтобы сообщение об ошибке отображались, поэтому существует несколько способов обработки ошибок, которые можно использовать для подавления ошибки при ожидании ввода данных.

Оценка знаменателя на наличие нуля или пустого значения

Самый простой способ избавиться от ошибки #ДЕЛ/0! — воспользоваться функцией ЕСЛИ для оценки знаменателя. Если он равен нулю или пустой, в результате вычислений можно отображать значение «0» или не выводить ничего. В противном случае будет вычислен результат формулы.

Например, если ошибка возникает в формуле =A2/A3, можно заменить ее формулой =ЕСЛИ(A3;A2/A3;0), чтобы возвращать 0, или формулой =ЕСЛИ(A3;A2/A3;»»), чтобы возвращать пустую строку. Также можно выводить произвольное сообщение. Пример: =ЕСЛИ(A3;A2/A3;»Ожидается значение.»). При этом Excel если(существует A3, возвращается результат формулы, в противном случае игнорируется).

Примеры устранения #DIV/0! исчезнут.

Чтобы скрыть #DIV/0, используйте #DIV.0! #BUSY!

Эту ошибку также можно скрыть, вложенную операцию деления в функцию ЕСЛИERROR. При использовании A2/A3 можно использовать =ЕСЛИERROR(A2/A3;0). Эта формула Excel, если формула возвращает ошибку, возвращает 0, в противном случае возвращает результат формулы.

В версиях до Excel 2007 можно использовать синтаксис ЕСЛИ(ЕОШИБКА()): =ЕСЛИ(ЕОШИБКА(A2/A3);0;A2/A3) (см. статью Функции Е).

Примечание. Как при работе с ifERROR, так и с методом ЕСЛИ(ЕERROR()) используются обработчики всех ошибок, а не только #DIV/0!. Прежде чем применять обработку ошибок, необходимо убедиться, что формула работает правильно. В противном случае вы можете не понимать, что формула работает неправильно.

Совет: Если в Microsoft Excel включена проверка ошибок, нажмите кнопку Значок кнопки рядом с ячейкой, в которой показана ошибка. Выберите пункт Показать этапы вычисления, если он отобразится, а затем выберите подходящее решение.

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

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Функция ЕСЛИ

Функция ЕСЛИОШИБКА

Функции Е

Полные сведения о формулах в Excel

Рекомендации, позволяющие избежать появления неработающих формул

Поиск ошибок в формулах

Функции Excel (по алфавиту)

Функции Excel (по категориям)

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

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

Ошибка деления на ноль в Excel

В реальности операция деление это по сути тоже что и вычитание. Например, деление числа 10 на 2 является многократным вычитанием 2 от 10-ти. Многократность повторяется до той поры пока результат не будет равен 0. Таким образом необходимо число 2 вычитать от десяти ровно 5 раз:

  1. 10-2=8
  2. 8-2=6
  3. 6-2=4
  4. 4-2=2
  5. 2-2=0

Если же попробовать разделить число 10 на 0, никогда мы не получим результат равен 0, так как при вычитании 10-0 всегда будет 10. Бесконечное количество раз вычитаний ноля от десяти не приведет нас к результату =0. Всегда будет один и ото же результат после операции вычитания =10:

  • 10-0=10
  • 10-0=10
  • 10-0=10
  • ∞ бесконечность.

В кулуарах математиков говорят, что результат деления любого числа на ноль является «не ограниченным». Любая компьютерная программа, при попытке деления на 0, просто возвращает ошибку. В Excel данная ошибка отображается значением в ячейке #ДЕЛ/0!.

Ошибка ДЕЛ 0.

Но при необходимости можно обойти возникновения ошибки деления на 0 в Excel. Просто следует пропустить операцию деления если в знаменателе находится число 0. Решение реализовывается с помощью помещения операндов в аргументы функции =ЕСЛИ():

Формула деления на ноль.

Таким образом формула Excel позволяет нам «делить» число на 0 без ошибок. При делении любого числа на 0 формула будет возвращать значение 0. То есть получим такой результат после деления: 10/0=0.



Как работает формула для устранения ошибки деления на ноль

Для работы корректной функция ЕСЛИ требует заполнить 3 ее аргумента:

  1. Логическое условие.
  2. Действия или значения, которые будут выполнены если в результате логическое условие возвращает значение ИСТИНА.
  3. Действия или значения, которые будут выполнены, когда логическое условие возвращает значение ЛОЖЬ.

В данном случаи аргумент с условием содержит проверку значений. Являются ли равным 0 значения ячеек в столбце «Продажи». Первый аргумент функции ЕСЛИ всегда должен иметь операторы сравнения между двумя значениями, чтобы получить результат условия в качестве значений ИСТИНА или ЛОЖЬ. В большинстве случаев используется в качестве оператора сравнения знак равенства, но могут быть использованы и другие например, больше> или меньше >. Или их комбинации – больше или равно >=, не равно !=.

Если условие в первом аргументе возвращает значение ИСТИНА, тогда формула заполнит ячейку значением со второго аргумента функции ЕСЛИ. В данном примере второй аргумент содержит число 0 в качестве значения. Значит ячейка в столбце «Выполнение» просто будет заполнена числом 0 если в ячейке напротив из столбца «Продажи» будет 0 продаж.

Если условие в первом аргументе возвращает значение ЛОЖЬ, тогда используется значение из третьего аргумента функции ЕСЛИ. В данном случаи — это значение формируется после действия деления показателя из столбца «Продажи» на показатель из столбца «План».

Таким образом данную формулу следует читать так: «Если значение в ячейке B2 равно 0, тогда формула возвращает значение 0. В противные случаи формула должна возвратить результат после операции деления значений в ячейках B2/C2».

Формула для деления на ноль или ноль на число

Усложним нашу формулу функцией =ИЛИ(). Добавим еще одного торгового агента с нулевым показателем в продажах. Теперь формулу следует изменить на:

Скопируйте эту формулу во все ячейки столбца «Выполнение»:

Формула деления на ноль и ноль на число.

Теперь независимо где будет ноль в знаменателе или в числителе формула будет работать так как нужно пользователю.

Читайте также: Как убрать ошибки в Excel

Данная функция позволяет нам расширить возможности первого аргумента с условием во функции ЕСЛИ. Таким образом в ячейке с формулой D5 первый аргумент функции ЕСЛИ теперь следует читать так: «Если значения в ячейках B5 или C5 равно ноль, тогда условие возвращает логическое значение ИСТИНА». Ну а дальше как прочитать остальную часть формулы описано выше.

При работе в Excel вы можете столкнуться с ошибкой #ДЕЛ/0, которая значит что вы пытаетесь поделить число на 0, а как вы знаете, делить на 0 нельзя. Исправить эту ошибку в Экселе можно несколькими способами.

Как исправить ошибку #ДЕЛ/0! в Excel

Способ 1. При помощи функции ЕСЛИ

При помощи функции ЕСЛИ() мы сможем обработать ситуацию, при которой числитель равен 0. Синтаксис функции следующий ЕСЛИ(условие; результат при верном значении; результат при неверном значении). В примере выше мы должны проверить, является ли значение в ячейке С4 равно 0, если равно 0, то присваиваем значение «-«, а если нет — то вычисляем значение от деления. Итого формула выглядит так: =ЕСЛИ(C4=0;»-«;C3/C4)

Как исправить ошибку #ДЕЛ/0! в Excel

Способ 1. При помощи функции ЕСЛИ

При помощи функции ЕСЛИ() мы сможем обработать ситуацию, при которой числитель равен 0. Синтаксис функции следующий ЕСЛИ(условие; результат при верном значении; результат при неверном значении). В примере выше мы должны проверить, является ли значение в ячейке С4 равно 0, если равно 0, то присваиваем значение «-«, а если нет — то вычисляем значение от деления. Итого формула выглядит так: =ЕСЛИ(C4=0;»-«;C3/C4)

Как исправить ошибку #ДЕЛ/0! в Excel

Способ 2. При помощи функции ЕСЛИОШИБКА

Функция ЕСЛИОШИБКА возвращает заданное значение, если в ячейке ошибка, иначе вычисляет заданную формулу. Синтаксис функции следующий  ЕСЛИОШИБКА(Формула; Значение если ошибка). В нашем случае будет так: =ЕСЛИОШИБКА(C3/C4;»-«)

 

Как исправить ошибку #ДЕЛ/0! в Excel

Спасибо, что прочитали статью. Теперь вы знаете, как исправить ошибку #ДЕЛ/0 в Excel. Есть вопросы — добро пожаловать в комментарии ;)

Привет, друзья. Ошибки в Экселе часто пугают новичков, ведь их исправление не всегда понятно и очевидно. Сегодня поговорим об ошибке, #ДЕЛ/0!, которая иногда появляется там, где её совсем не ждёшь.

Эта ошибка возникает, когда ваша формула пытается произвести деление на ноль. Да, в высшей математике такая операция вернёт «бесконечность», а в большинстве языков программирования – Infinity. Но в Экселе это вызовет ошибку, которая «поломает» все связанные расчёты. Давайте рассмотрим основные причины описанного.

Формула ссылается на пустую ячейку, или нулевое значение

Это простейший случай, который очень легко отследить.

В примере на картинке мы видим, что делитель – пустое значение (или ноль). Это могло случиться из-за того, что:

  • Эта ячейка еще не заполнена, но это будет сделано позднее
  • В ячейке правильное значение, равное нулю

Первое, что нужно сделать – проверить, все ли данные правильно внесены в таблицу, ввести или исправить некорректные величины.

Если все данные корректны, ошибку можно обойти с помощью формул, но об этом ниже в статье.

Формула среднего значения без подходящих аргументов

Когда вы пользуетесь функциями расчёта среднего значения СРЗНАЧ, СРЗНАЧЕСЛИ, СРЗНАЧЕСЛИМН, программа суммирует элементы и делит сумму на их количество. При том, если подходящих элементов для суммирования в диапазоне нет, их сумма и количество будет равны нулю, функция вернет #ДЕЛ/0!

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

Чтобы это исправить, нужно либо проверить список работников на ошибки и добавить Сидорова, либо применять формулы обхода.

Формула ссылается на ячейку, в которой содержится ошибка

Если ваша формула ссылается на ячейку, в которой ошибка #ДЕЛ/0!, она тоже вернёт эту ошибку. Смотрите, на примере:

В ячейке F12 – функция суммирования, там вообще нет никакого деления, но есть ошибка. Внутри диапазона суммирования, в ячейке F5, программа не смогла вычислить среднее значение, что и вызвало «цепное» распространение ошибки. В этом случае, нужно проверить внутренние формулы на предмет корректности, исправить и повторить расчёт.

Обход деления на ноль с помощью функции ЕСЛИ

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

Применяя функцию ЕСЛИ, можно проверить значение делителя. Вот так:

=ЕСЛИ(делитель=0; 0; делимое/делитель)

Формула проконтролирует значение делителя. Если он нулевой – вернёт ноль. Если нет – отношение делимого к делителю:

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

Перехват с помощью функции ЕСЛИОШИБКА

Вы можете использовать функцию ЕСЛИШИБКА для «отлова» любых ошибок, не только этой. Достаточно обернуть вашу формулу этой функцией:

Если результат выражения – ошибка, функция вернет «значение_если_ошибка». В противном случае, результат вычисления выражения. Вот так:

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

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

А у меня на этом всё. Если у вас что-то не получается по теме статьи – пишите комментарии с вопросами!

Исправление ошибки #DIV/0! #BUSY!

Ошибка #ДЕЛ/0! возникает в Microsoft Excel, когда число делится на ноль (0). Это происходит, если вы вводите простую формулу, например =5/0, или если формула ссылается на ячейку с 0 или пустую ячейку, как показано на этом рисунке.

Примеры формул, которые вызывают #DIV/0! исчезнут.

Есть несколько способов исправления этой ошибки.

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

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

Введите в ячейку, которая используется в формуле в качестве делителя, значение #Н/Д, чтобы изменить результат формулы на #Н/Д, указывая на недоступность делителя.

Во многих случаях это #DIV/0! их можно избежать, поскольку формулы ожидают ввода от вас или другого пользователя. В этом случае сообщение об ошибке отображаться не нужно, поэтому для ее подавления можно использовать несколько способов обработки ошибок.

Оценка знаменателя на наличие нуля или пустого значения

Самый простой способ избавиться от ошибки #ДЕЛ/0! — воспользоваться функцией ЕСЛИ для оценки знаменателя. Если он равен нулю или пустой, в результате вычислений можно отображать значение «0» или не выводить ничего. В противном случае будет вычислен результат формулы.

Например, если ошибка возникает в формуле =A2/A3, можно заменить ее формулой =ЕСЛИ(A3;A2/A3;0), чтобы возвращать 0, или формулой =ЕСЛИ(A3;A2/A3;»»), чтобы возвращать пустую строку. Также можно выводить произвольное сообщение. Пример: =ЕСЛИ(A3;A2/A3;»Ожидается значение.»). Он сообщает Excel ЕСЛИ(существует, то вернуть результат формулы, в противном случае игнорировать ее).

Примеры устранения #DIV/0! исчезнут.

Чтобы подавления этой #DIV/0, используйте #DIV. #BUSY!

Вы также можете скрыть эту ошибку, вложенную операцию деления в функцию ЕСЛИERROR. При использовании A2/A3 можно также использовать =ЕСЛИERROR(A2/A3;0). Он сообщает Excel, если формула возвращает ошибку, возвращается 0, в противном случае возвращается результат формулы.

В версиях до Excel 2007 можно использовать синтаксис ЕСЛИ(ЕОШИБКА()): =ЕСЛИ(ЕОШИБКА(A2/A3);0;A2/A3) (см. статью Функции Е).

Примечание. Как методы ЕСЛИERROR, так и ЕСЛИ(ЕERROR()) — это подавляющие обработчики всех ошибок, а не только #DIV/0!. Прежде чем применять обработку ошибок, убедитесь, что формула работает правильно. В противном случае вы можете не понимать, что формула работает неправильно.

Совет: Если в Microsoft Excel включена проверка ошибок, нажмите кнопку рядом с ячейкой, в которой показана ошибка. Выберите пункт Показать этапы вычисления, если он отобразится, а затем выберите подходящее решение.

У вас есть вопрос об определенной функции?

Помогите нам улучшить Excel

У вас есть предложения по улучшению следующей версии Excel? Если да, ознакомьтесь с темами на портале пользовательских предложений для Excel.

C# novice here, when the int ‘max’ below is 0 I get a divide by zero error, I can see why this happens but how should I handle this when max is 0? position is also an int.

    private void SetProgressBar(string text, int position, int max)
    {
        try
        {
            int percent = (100 * position) / max; //when max is 0 bug hits
            string txt = text + String.Format(". {0}%", percent);
            SetStatus(txt);
        }
        catch
        {
        }
    }

Aziz Shaikh's user avatar

Спасибо, что прочитали статью. Теперь вы знаете, как исправить ошибку #ДЕЛ/0 в Excel. Есть вопросы — добро пожаловать в комментарии ;)

Привет, друзья. Ошибки в Экселе часто пугают новичков, ведь их исправление не всегда понятно и очевидно. Сегодня поговорим об ошибке, #ДЕЛ/0!, которая иногда появляется там, где её совсем не ждёшь.

Эта ошибка возникает, когда ваша формула пытается произвести деление на ноль. Да, в высшей математике такая операция вернёт «бесконечность», а в большинстве языков программирования – Infinity. Но в Экселе это вызовет ошибку, которая «поломает» все связанные расчёты. Давайте рассмотрим основные причины описанного.

Формула ссылается на пустую ячейку, или нулевое значение

Это простейший случай, который очень легко отследить.

В примере на картинке мы видим, что делитель – пустое значение (или ноль). Это могло случиться из-за того, что:

  • Эта ячейка еще не заполнена, но это будет сделано позднее
  • В ячейке правильное значение, равное нулю

Первое, что нужно сделать – проверить, все ли данные правильно внесены в таблицу, ввести или исправить некорректные величины.

Если все данные корректны, ошибку можно обойти с помощью формул, но об этом ниже в статье.

Формула среднего значения без подходящих аргументов

Когда вы пользуетесь функциями расчёта среднего значения СРЗНАЧ, СРЗНАЧЕСЛИ, СРЗНАЧЕСЛИМН, программа суммирует элементы и делит сумму на их количество. При том, если подходящих элементов для суммирования в диапазоне нет, их сумма и количество будет равны нулю, функция вернет #ДЕЛ/0!

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

Чтобы это исправить, нужно либо проверить список работников на ошибки и добавить Сидорова, либо применять формулы обхода.

Формула ссылается на ячейку, в которой содержится ошибка

Если ваша формула ссылается на ячейку, в которой ошибка #ДЕЛ/0!, она тоже вернёт эту ошибку. Смотрите, на примере:

В ячейке F12 – функция суммирования, там вообще нет никакого деления, но есть ошибка. Внутри диапазона суммирования, в ячейке F5, программа не смогла вычислить среднее значение, что и вызвало «цепное» распространение ошибки. В этом случае, нужно проверить внутренние формулы на предмет корректности, исправить и повторить расчёт.

Обход деления на ноль с помощью функции ЕСЛИ

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

Применяя функцию ЕСЛИ, можно проверить значение делителя. Вот так:

=ЕСЛИ(делитель=0; 0; делимое/делитель)

Формула проконтролирует значение делителя. Если он нулевой – вернёт ноль. Если нет – отношение делимого к делителю:

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

Перехват с помощью функции ЕСЛИОШИБКА

Вы можете использовать функцию ЕСЛИШИБКА для «отлова» любых ошибок, не только этой. Достаточно обернуть вашу формулу этой функцией:

Если результат выражения – ошибка, функция вернет «значение_если_ошибка». В противном случае, результат вычисления выражения. Вот так:

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

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

А у меня на этом всё. Если у вас что-то не получается по теме статьи – пишите комментарии с вопросами!

Исправление ошибки #DIV/0! #BUSY!

Ошибка #ДЕЛ/0! возникает в Microsoft Excel, когда число делится на ноль (0). Это происходит, если вы вводите простую формулу, например =5/0, или если формула ссылается на ячейку с 0 или пустую ячейку, как показано на этом рисунке.

Примеры формул, которые вызывают #DIV/0! исчезнут.

Есть несколько способов исправления этой ошибки.

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

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

Введите в ячейку, которая используется в формуле в качестве делителя, значение #Н/Д, чтобы изменить результат формулы на #Н/Д, указывая на недоступность делителя.

Во многих случаях это #DIV/0! их можно избежать, поскольку формулы ожидают ввода от вас или другого пользователя. В этом случае сообщение об ошибке отображаться не нужно, поэтому для ее подавления можно использовать несколько способов обработки ошибок.

Оценка знаменателя на наличие нуля или пустого значения

Самый простой способ избавиться от ошибки #ДЕЛ/0! — воспользоваться функцией ЕСЛИ для оценки знаменателя. Если он равен нулю или пустой, в результате вычислений можно отображать значение «0» или не выводить ничего. В противном случае будет вычислен результат формулы.

Например, если ошибка возникает в формуле =A2/A3, можно заменить ее формулой =ЕСЛИ(A3;A2/A3;0), чтобы возвращать 0, или формулой =ЕСЛИ(A3;A2/A3;»»), чтобы возвращать пустую строку. Также можно выводить произвольное сообщение. Пример: =ЕСЛИ(A3;A2/A3;»Ожидается значение.»). Он сообщает Excel ЕСЛИ(существует, то вернуть результат формулы, в противном случае игнорировать ее).

Примеры устранения #DIV/0! исчезнут.

Чтобы подавления этой #DIV/0, используйте #DIV. #BUSY!

Вы также можете скрыть эту ошибку, вложенную операцию деления в функцию ЕСЛИERROR. При использовании A2/A3 можно также использовать =ЕСЛИERROR(A2/A3;0). Он сообщает Excel, если формула возвращает ошибку, возвращается 0, в противном случае возвращается результат формулы.

В версиях до Excel 2007 можно использовать синтаксис ЕСЛИ(ЕОШИБКА()): =ЕСЛИ(ЕОШИБКА(A2/A3);0;A2/A3) (см. статью Функции Е).

Примечание. Как методы ЕСЛИERROR, так и ЕСЛИ(ЕERROR()) — это подавляющие обработчики всех ошибок, а не только #DIV/0!. Прежде чем применять обработку ошибок, убедитесь, что формула работает правильно. В противном случае вы можете не понимать, что формула работает неправильно.

Совет: Если в Microsoft Excel включена проверка ошибок, нажмите кнопку рядом с ячейкой, в которой показана ошибка. Выберите пункт Показать этапы вычисления, если он отобразится, а затем выберите подходящее решение.

У вас есть вопрос об определенной функции?

Помогите нам улучшить Excel

У вас есть предложения по улучшению следующей версии Excel? Если да, ознакомьтесь с темами на портале пользовательских предложений для Excel.

C# novice here, when the int ‘max’ below is 0 I get a divide by zero error, I can see why this happens but how should I handle this when max is 0? position is also an int.

    private void SetProgressBar(string text, int position, int max)
    {
        try
        {
            int percent = (100 * position) / max; //when max is 0 bug hits
            string txt = text + String.Format(". {0}%", percent);
            SetStatus(txt);
        }
        catch
        {
        }
    }

Aziz Shaikh's user avatar

Aziz Shaikh

16.2k11 gold badges62 silver badges79 bronze badges

asked Oct 1, 2008 at 22:55

1

int percent = 0
if (max != 0) percent = (100*position) / max

rjzii's user avatar

rjzii

14.1k12 gold badges78 silver badges119 bronze badges

answered Oct 1, 2008 at 22:57

Simon's user avatar

SimonSimon

78.3k25 gold badges88 silver badges118 bronze badges

0

Well, that entirely depends on the behaviour you want. If the maximum value of your program bar is zero, is it full? Is it empty? This is a design choice, and when you’ve chosen, just test for max == 0 and deploy your answer.

answered Oct 1, 2008 at 22:57

Adam Wright's user avatar

Adam WrightAdam Wright

48.9k12 gold badges130 silver badges152 bronze badges

  • You can throw an exception.
  • You can do int percent = ( max > 0 ) ? (100 * position) / max : 0;
  • You can choose to do nothing instead of assigning a value to percent.
  • many, many other things…

Depends on what you want.

answered Oct 1, 2008 at 22:57

Swati's user avatar

SwatiSwati

49.9k4 gold badges36 silver badges53 bronze badges

Check for zero.

if ( max == 0 ) {
    txt = "0%";
} else {
    // Do the other stuff....

answered Oct 1, 2008 at 22:57

palehorse's user avatar

palehorsepalehorse

26.1k3 gold badges39 silver badges48 bronze badges

This is not a C# problem, it’s a math problem. Division by zero is undefined. Have an if statement that checks whether max > 0 and only execute your division then.

answered Oct 1, 2008 at 22:58

Esteban Araya's user avatar

Esteban ArayaEsteban Araya

29.2k24 gold badges106 silver badges141 bronze badges

Convert your

int percent = (100 * position) / max;

into

int percent;
if (max != 0)
    percent = (100 * position) / max;
else
    percent = 100; // or whatever fits your needs

answered Oct 1, 2008 at 23:00

tzot's user avatar

tzottzot

92.1k29 gold badges140 silver badges203 bronze badges

Well, if max is zero, then there is no progress to be made. Try catching the exception where this is called. That is probably the place to decide whether there is a problem or if the progress bar should be set at zero or at 100%.

answered Oct 1, 2008 at 22:59

Marcin's user avatar

MarcinMarcin

48.3k18 gold badges127 silver badges200 bronze badges

2

I guess the root question is: Does it make sense to even call this function where max is ‘0’? If yes, then I’d add special handling to it i.e.:

if (max == 0) 
{
    //do special handling here
}
else
{
    //do normal code here
}

If 0 doesn’t make sense, I’d investigate where it’s coming from.

answered Oct 1, 2008 at 22:59

Bob King's user avatar

Bob KingBob King

25.3k6 gold badges54 silver badges66 bronze badges

You would need a guard clause which checks for max == 0.

private void SetProgressBar(string text, int position, int max)
{
    if(max == 0)
        return;
    int percent = (100 * position) / max; //when max is 0 bug hits
    string txt = text + String.Format(". {0}%", percent);
    SetStatus(txt);
}

You could also handle the Divide by Zero exception, as your sample showed, but it is generally more costly to handle exceptions then to set up checks for known bad values.

answered Oct 1, 2008 at 22:59

ckramer's user avatar

ckramerckramer

9,4191 gold badge24 silver badges38 bronze badges

If you are using this for a download, you’ll probably want to show 0% as I assume max would == 0 in this case when you don’t KNOW the file size yet.

int percent = 0;
if (max != 0)
    ...;

If you are using this for some other long task, I’d want to assume 100%

But also, since position can never be between 0 and -1, so you’ll probably want to drop the 100 *

answered Oct 1, 2008 at 23:00

Dre's user avatar

DreDre

4,26830 silver badges39 bronze badges

You can user a ternary operator.

int percent = max != 0 ? (100 * position) / max : 0;

This means that when max does not equal zero, to perform the calculation. If it equals 0 then it will set the percent to 0.

answered Mar 10, 2021 at 1:37

Stephen85's user avatar

Stephen85Stephen85

2501 silver badge15 bronze badges

Понравилась статья? Поделить с друзьями:
  • Как исправить ошибку двигателя ваз 2112
  • Как исправить ошибку датчика фазы
  • Как исправить ошибку датчика скорости
  • Как исправить ошибку данные не получены
  • Как исправить ошибку данные не получены