haw-utils
Version:
一个基于业务场景的工具方法库
59 lines (58 loc) • 2.03 kB
JavaScript
(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;
});