Вы объединяете строки и затем пытаетесь преобразовать один результат в двойное. Таким образом, для результатов 75,6, 92,1, 56,3, 78,2 и 72,3 вы в конечном итоге попытаетесь разобрать «75,692,156.378.272.3».
Разобрать каждое значение и затем суммировать его.
Однако я настоятельно рекомендую использовать для этого decimal
вместо double
. Вам также следует рассмотреть возможность использования TryParse
вместо Parse
, чтобы вы могли корректно обрабатывать ошибки пользовательского ввода. Вот решение, придерживающееся Parse
:
public decimal AveragePercentage()
{
decimal sum = decimal.Parse(tbEnglish.Text) +
decimal.Parse(tbUrdu.Text) +
decimal.Parse(tbPhysics.Text) +
decimal.Parse(tbChemistry.Text) +
decimal.Parse(tbMaths.Text);
return sum / 5m;
}
Из интереса, в вашем исходном коде, почему вы делите на 500, а затем умножаете на 100? Почему бы просто не разделить на 5 (как теперь, когда я заметил, что происходит)?
В качестве примечания очень важно различать ошибки времени компиляции и ошибки времени исполнения . Это не был компилятором, который говорил, что входная строка была не в правильном формате - это был метод Convert.ToDouble
во время выполнения. В этом случае это было относительно очевидно, но в других ситуациях мы могли бы некоторое время преследовать свои хвосты, пытаясь найти проблему во время компиляции, когда она фактически не выполнялась во время выполнения.