zoukankan      html  css  js  c++  java
  • java spring 用户等级乘阶算法

    import java.math.BigDecimal;
    
    import cn.hutool.core.lang.Console;
    import cn.hutool.core.thread.ConcurrencyTester;
    import cn.hutool.core.thread.ThreadUtil;
    
    /**
     * 根据剩阶计算出当前用户的单日提现额度
     */
    public class LevelUtil {
    	public static void main(String[] args) {
    		ConcurrencyTester tester = ThreadUtil.concurrencyTest(1, () -> {
    			// 测试的逻辑内容
    			for (int i = 0; i <= 65000; i += 500) {
    				BigDecimal[] data = LevelUtil.level(BigDecimal.valueOf(i));
    				ThreadUtil.sleep(200);
    				Console.log("充值金额:{},等级:{},提现额度: {}", i, data[0], data[1]);
    			}
    		});
    		// 获取总的执行时间,单位毫秒
    		Console.log(tester.getInterval());
    	}
    
    	// 每个等级,每次提现的额度配置
    	private final static BigDecimal[] levels = { // 提现额度升级
    			BigDecimal.valueOf(10), // level-1
    			BigDecimal.valueOf(100), // level-2
    			BigDecimal.valueOf(500), // level-3
    			BigDecimal.valueOf(800), // level-4
    			BigDecimal.valueOf(1200), // level-5
    			BigDecimal.valueOf(2000), // level-6
    			BigDecimal.valueOf(2800), // level-7
    			BigDecimal.valueOf(3200), // level-8
    			BigDecimal.valueOf(3700), // level-9
    			BigDecimal.valueOf(4000), // level-10
    			BigDecimal.valueOf(4500), // level-11
    			BigDecimal.valueOf(5500), // level-12
    			BigDecimal.valueOf(6000), // level-13
    			BigDecimal.valueOf(6500), // level-14
    			BigDecimal.valueOf(7500), // level-15
    			BigDecimal.valueOf(8000), // level-16
    			BigDecimal.valueOf(8500), // level-17
    			BigDecimal.valueOf(9000), // level-18
    			BigDecimal.valueOf(20000), // level-19
    			BigDecimal.valueOf(30000), // level-20
    			BigDecimal.valueOf(40000), // level-21
    			BigDecimal.valueOf(60000)// level-22
    	};
    	// 充值金额*倍数=能提现额度
    	private static final BigDecimal MULTIPLE = BigDecimal.valueOf(5);
    
    	public static BigDecimal[] level(BigDecimal currency) {
    		int currentlevel = 0;
    		for (BigDecimal quota : levels) {
    			if (currency.compareTo(quota) > -1) {
    				currentlevel++;
    			}
    		}
    		BigDecimal range = levels[currentlevel];// 当前充值额度范围
    		if (currentlevel < levels.length) {
    			return new BigDecimal[] { BigDecimal.valueOf(currentlevel), range.multiply(MULTIPLE) };
    		}
    		return new BigDecimal[] { BigDecimal.valueOf(currentlevel), range.multiply(MULTIPLE) };
    	}
    }
    

      

  • 相关阅读:
    康托(逆)展开(2015.8.6)
    高精度计算(2015.8.1)
    笔记(2015.8.1)
    筛法求素数(2015.7.30)
    欧几里德算法(2015.7.28)
    快速幂取模(2015.7.29)
    同余
    图论相关算法
    笔记(2015-07-24)
    ACM进阶计划
  • 原文地址:https://www.cnblogs.com/light-zhang/p/14693028.html
Copyright © 2011-2022 走看看