标签:Fix 0.00 -- targe == java parse javascrip http
- 设计一个收银程序 `checkCashRegister()`,其把购买价格`(price)`作为第一个参数 , 付款金额 `(cash)`作为第二个参数, 和收银机中零钱 `(cid) `作为第三个参数。
- ` cid` 是一个二维数组,存着当前可用的找零。
- 当收银机中的钱不够找零时返回字符串 `"Insufficient Funds"`。 如果正好则返回字符串 `"Closed"`。
- 否则, 返回应找回的零钱列表,且由大到小存在二维数组中。
思路:1.change表示要找的钱,arr里放剩下的零钱数组,total表示零钱总价值,money表示总共要找的钱的总价值。
function checkCashRegister(price, cash, cid) {
let change = cash - price;
let arr = [],j = 0,total = 0 ,money = change;
const array = [0.01,0.05,0.1,0.25,1,5,10,20,100];
for(let i = cid.length - 1;i >= 0;i--){
total += cid[i][1];
if(change > array[i] && cid[i][1] > 0){
let c = parseInt(change / array[i]);
if(c * array[i] > cid[i][1]){
change -= cid[i][1];
}else{
change -= c * array[i];
cid[i][1] = c * array[i];
}
change = change.toFixed(2);
arr[j] = cid[i];
j++;
}
}
if(total === money){
return "Closed";
}else if(total < money || change != 0){
return "Insufficient Funds";
}
return arr;
}
console.log(checkCashRegister(19.50, 20.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]])); //[["QUARTER", 0.5]]
如果有不明白的地方请留言,如果有更好更简便更优化的方法请留言,谢谢。
更多内容请访问我的个人博客: Bblog
标签:Fix 0.00 -- targe == java parse javascrip http
原文地址:https://www.cnblogs.com/blackchaos/p/9139018.html