safeDivide static method

double safeDivide(
  1. num a,
  2. num b, {
  3. num whenBothZero = 0,
  4. num whenDivByZero = double.infinity,
  5. bool returnNaNOnDivByZero = false,
})

Safely divides two numbers with custom handling for division by zero and zero values.

  • Returns whenBothZero if both a and b are zero.
  • Returns whenDivByZero if dividing by zero unless returnNaNOnDivByZero is true.
  • Otherwise, returns a / b.

a is the numerator, b is the denominator. whenBothZero specifies the return value when both are zero (default: 0). whenDivByZero specifies the return value when dividing by zero (default: infinity). returnNaNOnDivByZero sets whether to return NaN on division by zero (default: false).

Example:

print(NumbersHelper.safeDivide(0, 0)); // Output: 0
print(NumbersHelper.safeDivide(10, 0)); // Output: Infinity
print(NumbersHelper.safeDivide(10, 0, whenDivByZero: -1)); // Output: -1
print(NumbersHelper.safeDivide(10, 0, returnNaNOnDivByZero: true)); // Output: NaN
print(NumbersHelper.safeDivide(10, 2)); // Output: 5

Implementation

static double safeDivide(
  num a,
  num b, {
  num whenBothZero = 0,
  num whenDivByZero = double.infinity,
  bool returnNaNOnDivByZero = false,
}) {
  if (a == 0 && b == 0) return whenBothZero.toDouble();
  if (b == 0) {
    return (returnNaNOnDivByZero ? double.nan : whenDivByZero).toDouble();
  }
  return a / b;
}