Защита с плавающей запятой или двойной должна сделать результат NaN или false.Если вы хотите обнаружить NaN, вам лучше не указывать значение, например 0/0.Когда вы делаете деление, отметьте 0 как делитель и скажите исключение, если оно есть.Вы можете обернуть это вспомогательным методом, чтобы упростить.
public static double div(double a, double b) {
if(b == 0) throw new IllegalArguementException();
return a / b;
}
Если я знаю, что значение может быть только 0 или больше, я часто добавляю смещение типа
double d = a / (b + 1e-9);
Это никогда не приводитЕсли Na = b> = 0. Если a == 0, d == 0. Предвзятое смещение зависит от ситуации.