91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java實現發紅包功能

發布時間:2020-06-10 17:20:13 來源:億速云 閱讀:397 作者:鴿子 欄目:編程語言


這篇文章教你用java做個紅包小項目!
注意事項
因為金額涉及到分,小數點后保留兩位,數值類型的轉換操作需要注意;
此中方案相對簡陋,并未實現每次紅包最大值在0.01-剩余紅包均值的2倍間;
/*

  • 紅包設計要求:
  • 1-紅包最小值為0.01,最大值為200
  • 2-紅包的金額面值為小數點后兩位
  • 3-避免單個紅包數值太大,通過系數設定
  • 4-紅包總量滿足金額數
  • */public class RedPacketUtil {
    //微信紅包的最大值和最小值,和最大紅包金額系數
    private static final float MINMUM = 0.01f;
    private static final float MAXMUM = 200.00f;
    private static final float TIMES = 2.1f;

    //判斷當前金額和數量是否正確
    public boolean isRight(float money,int count){
    //計算當前平均值
    float ave = (float)money / count;
    if(ave < MINMUM){
    return false;
    }else if(ave > MAXMUM){
    return false;
    }
    return true;
    }

    //生成每個具體紅包的金額
    public float redPacket(float money, float min, float maxs, int count) {
    //判斷當前人數
    if(count == 1){
    //確保紅包不小于0.01元
    money =  money > MINMUM ? money : MINMUM;
    return (float)(Math.round(money 100)) / 100;
    }
    float max = maxs > money ? money : maxs;
    //生成單個紅包數量,且保證紅包的精度
    float one = (float) (Math.random()
    (max - min) + min);
    one = (float)(Math.round(one * 100)) / 100;

    float moneyRest = (money - one);
    
    //判斷當前紅包數量是否合理
    if(isRight(moneyRest,count - 1)){
        return one;
    }else{
        //重新分配紅包
        float ave = (float)moneyRest / (count-1);
        if(ave < MINMUM){
            return redPacket(money,min,one,count);
        }else if(ave > MAXMUM){
            return redPacket(money,one,max,count);
        }
    }
    return one;

    }

    //拆分紅包,生成具體的紅包數
    public List<Float> splitRedPacket(float money,int count){
    //判斷當前金額和數量是否正確
    if(!isRight(money,count)){
    return null;
    }
    //記錄每個紅包的數量
    List<Float> rpList = new ArrayList<Float>();
    //單個紅包的最大金額
    float max = (float)(money * TIMES)/ count ;
    max = max > MAXMUM ? MAXMUM : max;
    float one = 0;
    //開始記錄每個紅包的數量
    for(int i = 0;i < count;i++){
    one = redPacket(money,MINMUM,max,count-i);
    rpList.add(one);
    money = money - one;
    }
    return rpList;
    }

    public static void main(String[] args) {
    RedPacketUtil util = new RedPacketUtil();
    List<Float> result = util.splitRedPacket(200, 10);
    System.out.println(result);
    //驗證金額總數
    float sum = 0;
    for(float i : result){
    sum = sum + i;
    }
    System.out.println(sum);
    }}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东阿县| 和平县| 安泽县| 胶州市| 黄石市| 宁波市| 巴彦淖尔市| 临朐县| 吴江市| 晋宁县| 辰溪县| 涞源县| 农安县| 民勤县| 会昌县| 通榆县| 上犹县| 巢湖市| 乌拉特后旗| 炉霍县| 滨海县| 荆门市| 凉城县| 施甸县| 远安县| 荥阳市| 邓州市| 美姑县| 富宁县| 桐梓县| 新津县| 麻城市| 青阳县| 怀来县| 中宁县| 华容县| 嵊州市| 渭南市| 黄平县| 台山市| 鄯善县|