function ComputeExponent(numberFormat, x, _a) {
      var getInternalSlots = _a.getInternalSlots;
      if (x === 0) {
          return [0, 0];
      }
      if (x < 0) {
          x = -x;
      }
      var magnitude = getMagnitude(x);
      var exponent = ComputeExponentForMagnitude(numberFormat, magnitude, {
          getInternalSlots: getInternalSlots,
      });
      // Preserve more precision by doing multiplication when exponent is negative.
      x = exponent < 0 ? x * Math.pow(10, -exponent) : x / Math.pow(10, exponent);
      var formatNumberResult = FormatNumericToString(getInternalSlots(numberFormat), x);
      if (formatNumberResult.roundedNumber === 0) {
          return [exponent, magnitude];
      }
      var newMagnitude = getMagnitude(formatNumberResult.roundedNumber);
      if (newMagnitude === magnitude - exponent) {
          return [exponent, magnitude];
      }
      return [
          ComputeExponentForMagnitude(numberFormat, magnitude + 1, {
              getInternalSlots: getInternalSlots,
          }),
          magnitude + 1,
      ];
  }
The abstract operation ComputeExponent computes an exponent (power of ten) by which to scale x
according to the number formatting settings. It handles cases such as 999 rounding up to 1000,
requiring a different exponent.

NOT IN SPEC: it returns [exponent, magnitude].