Можно ли получить 0, вычитая два неравных числа с плавающей точкой?

Можно ли получить деление на 0 (или бесконечность) в следующем примере?

public double calculation(double a, double b)
{
     if (a == b)
     {
         return 0;
     }
     else
     {
         return 2 / (a - b);
     }
}

В обычных случаях это не будет, конечно. Но что, если a и b очень близки, может ли (a-b) быть 0 из-за точности вычислений?

Обратите внимание, что этот вопрос для Java, но я думаю, что это будет применимо к большинству языков программирования.

130
задан Graham Borland 14 February 2015 в 12:03
поделиться