核心是实际业务场景问题和精度控制问题
class RedPackage {
constructor(money, num) {
this._money = money
this._num = num
}
getRandomMoney () {
if(this._num === 1) return this._money
const mm = parseInt(((this._money - ((this._num -1) * 0.01)) * Math.random() + 0.01) * Math.pow(10,2)) / Math.pow(10,2)
return mm
}
openPackage() {
if(this._money < this._num * 0.01) {
console.log(`也太抠了,金额过小`);
return
}
if(this._num === 0) {
console.log(`来晚了 红包抢完啦`);
return
}
const rMoney = this.getRandomMoney()
this._money = parseInt((this._money * Math.pow(10,2) - rMoney * Math.pow(10,2))) / Math.pow(10,2)
this._num--
console.log(`手气不错! 抢到的金额为:${rMoney}`)
}
}
const redPackage = new RedPackage(0.12, 5)
redPackage.openPackage() // 输入本次抢到的金额