Разделитесь на нулевую ошибку, как я фиксирую это?

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

[('a', 'b'), ('c', 'd')]

, затем перезапишет его значение с помощью:

 [('e', 'f'), ('g', 'h')]

Чтобы создать dict с дублирующимися ключами, взгляните на этот make-словарь с дублирующимися ключами в python

10
задан Aziz Shaikh 1 October 2012 в 09:54
поделиться

10 ответов

int percent = 0
if (max != 0) percent = (100*position) / max
16
ответ дан 3 December 2019 в 13:56
поделиться
  • Можно выдать исключение.
  • Можно сделать int percent = ( max > 0 ) ? (100 * position) / max : 0;
  • Можно принять решение ничего не сделать вместо того, чтобы присвоить значение проценту.
  • многие, много других вещей...

Зависит от того, что Вы хотите.

8
ответ дан 3 December 2019 в 13:56
поделиться

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

0
ответ дан 3 December 2019 в 13:56
поделиться

Это не проблема C#, это - математическая проблема. Деление на нуль не определено. Имейте, если оператор, который проверяет, выполняют ли макс.> 0 и только Ваше подразделение затем.

2
ответ дан 3 December 2019 в 13:56
поделиться

Ну, это полностью зависит от поведения, которое Вы хотите. Если максимальное значение Вашей панели программы является нулем, действительно ли это полно? Действительно ли это пусто? Это - проектное решение, и когда Вы выбрали, просто тестируете на макс. == 0 и развертываете свой ответ.

9
ответ дан 3 December 2019 в 13:56
поделиться

Проверьте на нуль.

if ( max == 0 ) {
    txt = "0%";
} else {
    // Do the other stuff....
3
ответ дан 3 December 2019 в 13:56
поделиться

Преобразуйте Ваш

int percent = (100 * position) / max;

в

int percent;
if (max != 0)
    percent = (100 * position) / max;
else
    percent = 100; // or whatever fits your needs
1
ответ дан 3 December 2019 в 13:56
поделиться

Я предполагаю, что основной вопрос: имеет смысл даже вызывать эту функцию, где макс. '0'? Если да, то я добавил бы специальную обработку к нему т.е.:

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

Если бы 0 не имеет смысла, я занялся бы расследованиями, куда он прибывает из.

0
ответ дан 3 December 2019 в 13:56
поделиться

Вам был бы нужен защитный пункт, который проверяет на макс. == 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);
}

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

0
ответ дан 3 December 2019 в 13:56
поделиться

При использовании этого для загрузки Вы, вероятно, захотите показать 0%, как я предполагаю, макс. был бы == 0 в этом случае, когда Вы еще не ЗНАЕТЕ размера файла.

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

Если бы Вы используете это для некоторой другой долгой задачи, я хотел бы принять 100%

Но также и, так как положение никогда не может быть между 0 и-1, таким образом, Вы, вероятно, захотите отбросить 100 *

0
ответ дан 3 December 2019 в 13:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: