核心是实际业务场景问题和精度控制问题
class RedPackage {constructor(money, num) {this._money = moneythis._num = num}getRandomMoney () {if(this._num === 1) return this._moneyconst 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() // 输入本次抢到的金额