From 9ab4955166b7b1370fc2a49b152353241ca9e64a Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 16 十月 2023 09:22:23 +0800 Subject: [PATCH] 小程序 --- minipro_standard/uni_modules/uview-ui/libs/function/digit.js | 167 ------------------------------------------------------- 1 files changed, 0 insertions(+), 167 deletions(-) diff --git a/minipro_standard/uni_modules/uview-ui/libs/function/digit.js b/minipro_standard/uni_modules/uview-ui/libs/function/digit.js index c8260a0..e69de29 100644 --- a/minipro_standard/uni_modules/uview-ui/libs/function/digit.js +++ b/minipro_standard/uni_modules/uview-ui/libs/function/digit.js @@ -1,167 +0,0 @@ -let _boundaryCheckingState = true; // 鏄惁杩涜瓒婄晫妫�鏌ョ殑鍏ㄥ眬寮�鍏� - -/** - * 鎶婇敊璇殑鏁版嵁杞 - * @private - * @example strip(0.09999999999999998)=0.1 - */ -function strip(num, precision = 15) { - return +parseFloat(Number(num).toPrecision(precision)); -} - -/** - * Return digits length of a number - * @private - * @param {*number} num Input number - */ -function digitLength(num) { - // Get digit length of e - const eSplit = num.toString().split(/[eE]/); - const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0); - return len > 0 ? len : 0; -} - -/** - * 鎶婂皬鏁拌浆鎴愭暣鏁�,濡傛灉鏄皬鏁板垯鏀惧ぇ鎴愭暣鏁� - * @private - * @param {*number} num 杈撳叆鏁� - */ -function float2Fixed(num) { - if (num.toString().indexOf('e') === -1) { - return Number(num.toString().replace('.', '')); - } - const dLen = digitLength(num); - return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num); -} - -/** - * 妫�娴嬫暟瀛楁槸鍚﹁秺鐣岋紝濡傛灉瓒婄晫缁欏嚭鎻愮ず - * @private - * @param {*number} num 杈撳叆鏁� - */ -function checkBoundary(num) { - if (_boundaryCheckingState) { - if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) { - console.warn(`${num} 瓒呭嚭浜嗙簿搴﹂檺鍒讹紝缁撴灉鍙兘涓嶆纭甡); - } - } -} - -/** - * 鎶婇�掑綊鎿嶄綔鎵佸钩杩唬鍖� - * @param {number[]} arr 瑕佹搷浣滅殑鏁板瓧鏁扮粍 - * @param {function} operation 杩唬鎿嶄綔 - * @private - */ -function iteratorOperation(arr, operation) { - const [num1, num2, ...others] = arr; - let res = operation(num1, num2); - - others.forEach((num) => { - res = operation(res, num); - }); - - return res; -} - -/** - * 楂樼簿搴︿箻娉� - * @export - */ -export function times(...nums) { - if (nums.length > 2) { - return iteratorOperation(nums, times); - } - - const [num1, num2] = nums; - const num1Changed = float2Fixed(num1); - const num2Changed = float2Fixed(num2); - const baseNum = digitLength(num1) + digitLength(num2); - const leftValue = num1Changed * num2Changed; - - checkBoundary(leftValue); - - return leftValue / Math.pow(10, baseNum); -} - -/** - * 楂樼簿搴﹀姞娉� - * @export - */ -export function plus(...nums) { - if (nums.length > 2) { - return iteratorOperation(nums, plus); - } - - const [num1, num2] = nums; - // 鍙栨渶澶х殑灏忔暟浣� - const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2))); - // 鎶婂皬鏁伴兘杞负鏁存暟鐒跺悗鍐嶈绠� - return (times(num1, baseNum) + times(num2, baseNum)) / baseNum; -} - -/** - * 楂樼簿搴﹀噺娉� - * @export - */ -export function minus(...nums) { - if (nums.length > 2) { - return iteratorOperation(nums, minus); - } - - const [num1, num2] = nums; - const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2))); - return (times(num1, baseNum) - times(num2, baseNum)) / baseNum; -} - -/** - * 楂樼簿搴﹂櫎娉� - * @export - */ -export function divide(...nums) { - if (nums.length > 2) { - return iteratorOperation(nums, divide); - } - - const [num1, num2] = nums; - const num1Changed = float2Fixed(num1); - const num2Changed = float2Fixed(num2); - checkBoundary(num1Changed); - checkBoundary(num2Changed); - // 閲嶈锛岃繖閲屽繀椤荤敤strip杩涜淇 - return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1)))); -} - -/** - * 鍥涜垗浜斿叆 - * @export - */ -export function round(num, ratio) { - const base = Math.pow(10, ratio); - let result = divide(Math.round(Math.abs(times(num, base))), base); - if (num < 0 && result !== 0) { - result = times(result, -1); - } - // 浣嶆暟涓嶈冻鍒欒ˉ0 - return result; -} - -/** - * 鏄惁杩涜杈圭晫妫�鏌ワ紝榛樿寮�鍚� - * @param flag 鏍囪寮�鍏筹紝true 涓哄紑鍚紝false 涓哄叧闂紝榛樿涓� true - * @export - */ -export function enableBoundaryChecking(flag = true) { - _boundaryCheckingState = flag; -} - - -export default { - times, - plus, - minus, - divide, - round, - enableBoundaryChecking, -}; - -- Gitblit v1.9.3