index/functions/safeDivideWithMinimum.md
safeDivideWithMinimum(
numerator,denominator,minimum?,fallback?):BigNumber
Divide with zero fallback AND minimum threshold check
Performs safe division with two layers of protection:
- Returns fallback if denominator is zero
- Returns minimum threshold if computed result is less than minimum
This prevents calculations from producing unrealistic micro-values (e.g., APR calculations that shouldn't return 0.0000001%).
Consolidates 3 partial occurrences across APR and portfolio calculations.
big number
Parameters
| Parameter | Type | Description |
|---|---|---|
numerator | string | number | BigNumber | Dividend |
denominator | string | number | BigNumber | Divisor |
minimum? | string | number | BigNumber | Minimum threshold (default: "0", meaning no minimum) |
fallback? | string | number | BigNumber | Value to return if denominator is zero (default: "0") |
big number
Returns
BigNumber
The quotient, minimum threshold if result is too small, or fallback if denominator is zero
big number
Throws
Error if minimum is negative or minimum > maximum representable value
Example
// Safe division with zero fallback
const ratio = safeDivideWithMinimum('100', '0', undefined, '0');
// Returns: "0" (denominator is zero)
// Enforce minimum APR (never report less than 0.01%)
const apr = safeDivideWithMinimum(
feeAmount,
liquidityValue,
'0.0001' // Minimum 0.01% APR
);
// Threshold prevents micro-values
const tiny = safeDivideWithMinimum('1', '1000000', '0.001');
// Result 0.000001 is < minimum 0.001, so returns 0.001
// Normal division (result meets threshold)
const normal = safeDivideWithMinimum('100', '10', '0.001');
// Result 10 > minimum 0.001, so returns 10