safeDivide static method
Safely divides two numbers with custom handling for division by zero and zero values.
- Returns
whenBothZeroif bothaandbare zero. - Returns
whenDivByZeroif dividing by zero unlessreturnNaNOnDivByZeroistrue. - 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;
}