46 lines
1.6 KiB
Plaintext
Executable File
46 lines
1.6 KiB
Plaintext
Executable File
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.FormatNumericToString = void 0;
|
|
var _262_1 = require("../262");
|
|
var ToRawPrecision_1 = require("./ToRawPrecision");
|
|
var utils_1 = require("../utils");
|
|
var ToRawFixed_1 = require("./ToRawFixed");
|
|
/**
|
|
* https://tc39.es/ecma402/#sec-formatnumberstring
|
|
*/
|
|
function FormatNumericToString(intlObject, x) {
|
|
var isNegative = x < 0 || (0, _262_1.SameValue)(x, -0);
|
|
if (isNegative) {
|
|
x = -x;
|
|
}
|
|
var result;
|
|
var rourndingType = intlObject.roundingType;
|
|
switch (rourndingType) {
|
|
case 'significantDigits':
|
|
result = (0, ToRawPrecision_1.ToRawPrecision)(x, intlObject.minimumSignificantDigits, intlObject.maximumSignificantDigits);
|
|
break;
|
|
case 'fractionDigits':
|
|
result = (0, ToRawFixed_1.ToRawFixed)(x, intlObject.minimumFractionDigits, intlObject.maximumFractionDigits);
|
|
break;
|
|
default:
|
|
result = (0, ToRawPrecision_1.ToRawPrecision)(x, 1, 2);
|
|
if (result.integerDigitsCount > 1) {
|
|
result = (0, ToRawFixed_1.ToRawFixed)(x, 0, 0);
|
|
}
|
|
break;
|
|
}
|
|
x = result.roundedNumber;
|
|
var string = result.formattedString;
|
|
var int = result.integerDigitsCount;
|
|
var minInteger = intlObject.minimumIntegerDigits;
|
|
if (int < minInteger) {
|
|
var forwardZeros = (0, utils_1.repeat)('0', minInteger - int);
|
|
string = forwardZeros + string;
|
|
}
|
|
if (isNegative) {
|
|
x = -x;
|
|
}
|
|
return { roundedNumber: x, formattedString: string };
|
|
}
|
|
exports.FormatNumericToString = FormatNumericToString;
|