Вы не должны возвращаться 0. Вы должны вернуть float.NegativeInfinity
(если a
отрицательный) или float.PositiveInfinity
(если a
положительна), и float.NaN
если оба a
и b
равны 0. Заметим, что это одно и то же поведение что вы получите, если вы сделали это в вашем коде:
return a/b;
Таким образом, вы можете захотеть, чтобы просто изменить код следующим образом:
public float podil (float a, float b) {
return a/b;
}
Если деление на 0 представляет собой определенное незаконное условие в вашем приложении, и вы не хотите, чтобы значения float.NaN
распространялись, вы должны выбросить исключение. Как:
public float podil (float a, float b) {
var result = a/b;
if (float.IsNan(result))
throw new DivideByZeroException(); // or a different exception type.
return result;
}
Смотрите эту fiddle, он вернется float.PositiveInfinity
.
Все, что вы хотите. Вы просите об исключениях? – SLaks
Несвязанное примечание: вы должны быть осторожны, сравнивая числа с плавающей точкой для равенства. Как правило, вы никогда не должны этого делать, поскольку это очень вероятно, что это приведет к неправильным последствиям из-за проблем с высокой точностью. – n0rd