operator / method

Amount operator /(
  1. Amount other
)

Implementation

Amount operator /(Amount other) {
  if (other.value == BigInt.zero) {
    throw ArgumentError('Cannot divide by zero.');
  }

  // Determine the maximum decimals between the two amounts
  int maxDecimals = max(decimals, other.decimals);

  // Scale both amounts to the same decimal level
  BigInt scaledThisValue =
      value * BigInt.from(pow(10, maxDecimals - decimals));
  BigInt scaledOtherValue =
      other.value * BigInt.from(pow(10, maxDecimals - other.decimals));

  // Perform the division
  BigInt resultValue =
      (scaledThisValue * BigInt.from(pow(10, maxDecimals))) ~/
          scaledOtherValue;

  return Amount(
    value: resultValue,
    decimals: maxDecimals,
  );
}