UNPKG

haw-utils

Version:

一个基于业务场景的工具方法库

59 lines (58 loc) 2.03 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(["exports", "../utils/math.util", "./times"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("../utils/math.util"), require("./times")); } else { var mod = { exports: {} }; factory(mod.exports, global.utilsMathUtil, global.times); global.divide = mod.exports; } })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _math, _times) { "use strict"; Object.defineProperty(_exports, "__esModule", { value: true }); _exports["default"] = void 0; _times = _interopRequireDefault(_times); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * 精确除法,支持多个数相除 * * @static * @alias module:Math.divide * @since 3.1.0 * @param {Number} num1 除数 * @param {Number} num2 被除数 * @param {Number} [others] 其余被除数 * @returns {Number} 商数 * @example * * divide(1.21, 1.1); * // => 1.1 * * divide(1000, 10, 10); * // => 10 * * divide(1000, 10, 10, 10); * // => 1 */ function divide(num1, num2) { for (var _len = arguments.length, others = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { others[_key - 2] = arguments[_key]; } if (others.length > 0) { return divide.apply(void 0, [divide(num1, num2)].concat(others)); } var num1Changed = (0, _math.float2Fixed)(num1); var num2Changed = (0, _math.float2Fixed)(num2); (0, _math.checkBoundary)(num1Changed); (0, _math.checkBoundary)(num2Changed); // fix: 类似 10 ** -4 为 0.00009999999999999999,strip 修正 return (0, _times["default"])(num1Changed / num2Changed, (0, _math.strip)(Math.pow(10, (0, _math.digitLength)(num2) - (0, _math.digitLength)(num1)))); } var _default = divide; _exports["default"] = _default; });