@genexus/web-standard-functions
Version:
GeneXus JavaScript standard functions library for web generators
30 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.roundToEvenBigNumber = void 0;
const divide_1 = require("../math/divide");
const multiply_1 = require("../math/multiply");
const subtract_1 = require("../math/subtract");
const gxbignumber_1 = require("../types/gxbignumber");
const mod_1 = require("./mod");
const round_1 = require("./round");
/**
* Rounds to even the given number to the specified number of decimal digits
* @param {GxBigNumber} value
* @param {GxBigNumber} digits
* @returns GxBigNumber
*/
const roundToEvenBigNumber = (value, digits) => {
let digitsAux = Number(digits.toString());
const multiplier = Math.pow(10, digitsAux || 0);
const valToRound = (0, multiply_1.multiply)(value, new gxbignumber_1.GxBigNumber(multiplier));
let int = new gxbignumber_1.GxBigNumber(valToRound.toString().split(".")[0]);
const decimalPart = (0, subtract_1.subtract)(valToRound, int);
let rounded = (0, round_1.roundBigNumber)(valToRound, new gxbignumber_1.GxBigNumber(0));
if (gxbignumber_1.GxBigNumber.compare(decimalPart, new gxbignumber_1.GxBigNumber(0.5)) === 0 &&
gxbignumber_1.GxBigNumber.compare((0, mod_1.modBigNumber)(rounded, new gxbignumber_1.GxBigNumber(2)), new gxbignumber_1.GxBigNumber(0)) !== 0) {
rounded = (0, subtract_1.subtract)(rounded, 1);
}
return (0, divide_1.divide)(rounded, multiplier);
};
exports.roundToEvenBigNumber = roundToEvenBigNumber;
//# sourceMappingURL=roundToEven.js.map