/**
 * 折中方案：处理浮点失真，如果页面卡顿，则需要服务处理
 * @param val 
 * @param decimal 需要保留小数位 默认2 
 * @param maxCount 最大小数位 超过的时候需要对数值进行处理 
 * @returns 
 */
export function getDecimalsNum(val: any, decimal = 2, maxCount = 6) {
    let result = val
    if (typeof val === 'number') {
        const str = val.toString();
        if (str.includes('.')) {
            const num = str.indexOf('.') + 1;
            const count = str.length - num;
            if (count > maxCount) {
                result = val.toFixed(decimal)
            }
        }
    }
    return result
}

/**
 * 强制保留小数位，零位四舍五入取整
 * @param value 
 * @param decimal 保留小数位 默认2 
 * @returns 
 */
export function toDecimalFull(value: number, decimal = 2) {
    if (decimal <= 0) {
        return Math.round(value).toString();
    } else {
        let str = value.toString();
        const num = str.indexOf('.');
        if (num < 0) {
            // 小数位自动补零
            if (decimal > 0) {
                const count = str.length;
                str += '.';
                while (str.length <= count + decimal) {
                    str += '0';
                }
            }
            return str;
        }
        return value.toFixed(decimal);
    }
}

/**
 * 数字转千位符金额
 * @param value 金额数值
 * @param decimal 保留小数位 默认2 
 */
export function formatAmount(value: number, decimal = 2) {
    const reg = new RegExp('(\\d)(?=(\\d{3})+$)', 'ig');
    const result = value.toFixed(decimal).toString().split('.');
    result[0] = result[0].replace(reg, '$1,');
    return result.join('.');
}