function formatNumericToString(internalSlots, x) {
        var isNegative = x < 0 || objectIs(x, -0);
        if (isNegative) {
            x = -x;
        }
        var result;
        var rourndingType = internalSlots.roundingType;
        switch (rourndingType) {
            case 'significantDigits':
                result = toRawPrecision(x, internalSlots.minimumSignificantDigits, internalSlots.maximumSignificantDigits);
                break;
            case 'fractionDigits':
                result = toRawFixed(x, internalSlots.minimumFractionDigits, internalSlots.maximumFractionDigits);
                break;
            default:
                result = toRawPrecision(x, 1, 2);
                if (result.integerDigitsCount > 1) {
                    result = toRawFixed(x, 0, 0);
                }
                break;
        }
        x = result.roundedNumber;
        var string = result.formattedString;
        var int = result.integerDigitsCount;
        var minInteger = internalSlots.minimumIntegerDigits;
        if (int < minInteger) {
            var forwardZeros = repeat('0', minInteger - int);
            string = forwardZeros + string;
        }
        if (isNegative) {
            x = -x;
        }
        return { roundedNumber: x, formattedString: string };
    }
https://tc39.es/ecma402/#sec-formatnumberstring
TODO: dedup with intl-pluralrules