divide method
Divides this BigDecimal by another.
other
the divisor
scale the scale of the result (default is max of operand scales + 10)
Implementation
BigDecimal divide(BigDecimal other, [int? resultScale]) {
if (other._unscaledValue == BigInt.zero) {
throw InvalidArgumentException('Division by zero');
}
resultScale ??= (_scale > other._scale ? _scale : other._scale) + 10;
// Scale up the dividend to achieve desired precision
int scaleDiff = resultScale + other._scale - _scale;
BigInt scaledDividend = _unscaledValue * BigInt.from(10).pow(scaleDiff);
BigInt quotient = scaledDividend ~/ other._unscaledValue;
return BigDecimal._(quotient, resultScale);
}