17 lines
706 B
JavaScript
17 lines
706 B
JavaScript
|
|
//#region src/compat/_internal/decimalAdjust.ts
|
||
|
|
function decimalAdjust(type, number, precision = 0) {
|
||
|
|
number = Number(number);
|
||
|
|
if (Object.is(number, -0)) number = "-0";
|
||
|
|
precision = Math.min(Number.parseInt(precision, 10), 292);
|
||
|
|
if (precision) {
|
||
|
|
const [magnitude, exponent = 0] = number.toString().split("e");
|
||
|
|
let adjustedValue = Math[type](Number(`${magnitude}e${Number(exponent) + precision}`));
|
||
|
|
if (Object.is(adjustedValue, -0)) adjustedValue = "-0";
|
||
|
|
const [newMagnitude, newExponent = 0] = adjustedValue.toString().split("e");
|
||
|
|
return Number(`${newMagnitude}e${Number(newExponent) - precision}`);
|
||
|
|
}
|
||
|
|
return Math[type](Number(number));
|
||
|
|
}
|
||
|
|
//#endregion
|
||
|
|
exports.decimalAdjust = decimalAdjust;
|