let _ = require("lodash");function getRandomMoney(remainSize, remainMoney) { // remainSize 剩余的红包数量 // remainMoney 剩余的钱 // console.log("remainSize,remainMoney: ",remainSize,remainMoney) let money = 0.0; if (remainSize == 1) { remainSize--; money = Math.round(remainMoney * 100) / 100; console.log("=====> " + money); return money; } let r = Math.random(); let min = 0.01; // let max = (remainMoney / remainSize) * 2; //系数 money = r * max; money = money <= min ? 0.01 : money; money = Math.floor(money * 100) / 100; // console.log("=====> " + money); remainSize--; remainMoney -= money; return parseFloat(money.toFixed(2));}function calcSplitAmt(total, size) { // return 0; return Math.floor((total * 0.8) / size) * size;}function start() { let remain = 0; let total = 100; let size = 7; let list = []; let split_amt = calcSplitAmt(total, size); console.log("split_amt===>", split_amt) let floating = split_amt / size; console.log("每个人 后来加", floating) // let half = total - split_amt; let remainMoney = half; console.log("remainMoney==>",remainMoney) Array(size).fill(1).forEach((item, index) => { let amt = getRandomMoney(size - index, remainMoney); list.push(amt); remainMoney = remainMoney - amt; }) let result_a = list.map((a) => { return a + floating; }); let result_t = result_a.reduce((pre, current) => { return pre + current }, 0); console.log("result_t ",_.round(result_t, 2), result_a.join(" | ")) let t2 = result_a.map((a) => { return _.round(a, 2) }); let t3 = t2.reduce((pre, current) => { return pre + current }, 0); console.log("四舍五入之后 : ", Math.round(t3), "--------", t2.map(a=>a.toFixed(2)).join(" | ")) console.log("小部分 总数: ", list.reduce((pre, current) => { return pre + current }, 0)) console.log("百分比: ", list.map(a=>a.toFixed(2)).join(" | "))}start();
排版好点,
你全部换成java的不就行了。。。
let _ = require("lodash");
function getRandomMoney(remainSize, remainMoney) {
// remainSize 剩余的红包数量
// remainMoney 剩余的钱
// console.log("remainSize,remainMoney: ",remainSize,remainMoney)
let money = 0.0;
if (remainSize == 1) {
remainSize--;
money = Math.round(remainMoney * 100) / 100;
console.log("=====> " + money);
return money;
}
let r = Math.random();
let min = 0.01; //
let max = (remainMoney / remainSize) * 2; //系数
money = r * max;
money = money <= min ? 0.01 : money;
money = Math.floor(money * 100) / 100;
// console.log("=====> " + money);
remainSize--;
remainMoney -= money;
return parseFloat(money.toFixed(2));
}
function calcSplitAmt(total, size) {
// return 0;
return Math.floor((total * 0.8) / size) * size;
}
function start() {
let remain = 0;
let total = 100;
let size = 7;
let list = [];
let split_amt = calcSplitAmt(total, size);
console.log("split_amt===>", split_amt)
let floating = split_amt / size;
console.log("每个人 后来加", floating)
//
let half = total - split_amt;
let remainMoney = half;
console.log("remainMoney==>",remainMoney)
Array(size).fill(1).forEach((item, index) => {
let amt = getRandomMoney(size - index, remainMoney);
list.push(amt);
remainMoney = remainMoney - amt;
})
let result_a = list.map((a) => {
return a + floating;
});
let result_t = result_a.reduce((pre, current) => {
return pre + current
}, 0);
console.log("result_t ",_.round(result_t, 2), result_a.join(" | "))
let t2 = result_a.map((a) => {
return _.round(a, 2)
});
let t3 = t2.reduce((pre, current) => {
return pre + current
}, 0);
console.log("四舍五入之后 : ", Math.round(t3), "--------", t2.map(a=>a.toFixed(2)).join(" | "))
console.log("小部分 总数: ",
list.reduce((pre, current) => {
return pre + current
}, 0))
console.log("百分比: ", list.map(a=>a.toFixed(2)).join(" | "))
}
start();