UNPKG

@orca-fe/tools

Version:
49 lines (48 loc) 1.44 kB
export function toFixedNumber(num, fractionDigits) { if (!Number.isNaN(Number(num))) { return Number(Number(num).toFixed(fractionDigits)); } return num; } export function decimalLength(value) { var str = String(value); var pointPosition = str.indexOf('.'); if (pointPosition < 0) return 0; return str.length - pointPosition - 1; } export function by(fn) { return function (divisor, offset = 0) { var decimalLen = decimalLength(divisor); return function (num) { return toFixedNumber(fn((num + offset) / divisor) * divisor - offset, decimalLen); }; }; } export var roundBy = by(Math.round); export var floorBy = by(Math.floor); export var ceilBy = by(Math.ceil); /** * 把一个值限制在一个上限和下限之间 * @param _num 当前数字 * @param lower 最小值 * @param upper 最大值 */ export function clamp(_num, lower, upper) { var num = _num; // eslint-disable-next-line no-self-compare if (num === num) { if (upper !== undefined) { // 如果上限制大于number,则number的值不变,反之,number赋值upper的值 num = num <= upper ? num : upper; } if (lower !== undefined) { // 同样的,如果下限值小于number,则number值不变,防止,number赋值lower的值 num = num >= lower ? num : lower; } } return num; } export function mix(x, y, _a) { var a = clamp(_a, 0, 1); return x * (1 - a) + y * a; }