frontend/.pnpm-store/v3/files/1c/5ba417a69ab78dd510cae60ca9af284d81182676a67c01f5fd7260d60f7965d3c179be4308e3d5572f5af3e7c088ae2dbcd5bac0fde99b1eccf18fd9381dfa-exec

42 lines
1.4 KiB
Plaintext
Executable File

import { SameValue } from '../262';
import { ToRawPrecision } from './ToRawPrecision';
import { repeat } from '../utils';
import { ToRawFixed } from './ToRawFixed';
/**
* https://tc39.es/ecma402/#sec-formatnumberstring
*/
export function FormatNumericToString(intlObject, x) {
var isNegative = x < 0 || SameValue(x, -0);
if (isNegative) {
x = -x;
}
var result;
var rourndingType = intlObject.roundingType;
switch (rourndingType) {
case 'significantDigits':
result = ToRawPrecision(x, intlObject.minimumSignificantDigits, intlObject.maximumSignificantDigits);
break;
case 'fractionDigits':
result = ToRawFixed(x, intlObject.minimumFractionDigits, intlObject.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 = intlObject.minimumIntegerDigits;
if (int < minInteger) {
var forwardZeros = repeat('0', minInteger - int);
string = forwardZeros + string;
}
if (isNegative) {
x = -x;
}
return { roundedNumber: x, formattedString: string };
}