UNPKG

archi

Version:

Easy math with decimals for Javascript

59 lines (43 loc) 1.23 kB
'use strict'; var ArchiNumber = require('poser')('Number'); ArchiNumber.prototype.plus = function (num) { var num1 = +this; var num2 = +num; var factor = getMaxFactor(num1, num2); return new ArchiNumber(((num1 * factor) + (num2 * factor)) / factor); }; ArchiNumber.prototype.minus = function (num) { var num1 = +this; var num2 = +num; var factor = getMaxFactor(num1, num2); return new ArchiNumber(((num1 * factor) - (num2 * factor)) / factor); }; ArchiNumber.prototype.mod = function (num) { var num1 = +this; var num2 = +num; var factor = getMaxFactor(num1, num2); return new ArchiNumber((num1 * factor) % (num2 * factor)); }; function getMaxFactor(num1, num2) { return Math.max(getFactor(num1), getFactor(num2)); } function getDecimals(num) { var numStr = num.toString(); var pointIndex = numStr.indexOf('.'); var decimals = pointIndex === -1 ? 0 : numStr.length - numStr.indexOf('.') - 1; return decimals; } function getFactor(num) { var decimals = getDecimals(num); var factor = Math.pow(10, decimals); return factor; } var archi = { calc: function (num) { return new ArchiNumber(num); } }; if (process.browser) { global.archi = archi; } module.exports = archi;