void DigitList::mult(const DigitList &other, UErrorCode &status) { fContext.status = 0; int32_t requiredDigits = this->digits() + other.digits(); if (requiredDigits > fContext.digits) { reduce(); // Remove any trailing zeros int32_t requiredDigits = this->digits() + other.digits(); ensureCapacity(requiredDigits, status); } uprv_decNumberMultiply(fDecNumber, fDecNumber, other.fDecNumber, &fContext); fHaveDouble = FALSE; }
/* * Multiply * The number will be expanded if need be to retain full precision. * In practice, for formatting, multiply is by 10, 100 or 1000, so more digits * will not be required for this use. */ void DigitList::mult(const DigitList &other, UErrorCode &status) { if (U_FAILURE(status)) { return; } fContext.status = 0; int32_t requiredDigits = this->digits() + other.digits(); if (requiredDigits > fContext.digits) { reduce(); // Remove any trailing zeros int32_t requiredDigits = this->digits() + other.digits(); ensureCapacity(requiredDigits, status); } uprv_decNumberMultiply(fDecNumber, fDecNumber, other.fDecNumber, &fContext); internalClear(); }