根据JavaScript中的数量计算价格的应用程序
我有一个练习,当根据JavaScript中的数量计算价格的应用程序,javascript,Javascript,我有一个练习,当quaty大于3时,我正在努力理解实现结果的逻辑: 用于计算促销期间将购买的比萨饼(如下所列)价格的应用程序。比萨饼的数量将由用户输入 一个大比萨饼要花6.45美元 两个大比萨饼要12美元 三个大比萨饼要14美元 四家或四家以上的比萨饼将采用上述价格的组合,以确保为客户提供最佳价格。例如,五个比萨的最佳价格是两个比萨(12.00美元)+三个比萨(14.00美元) 该算法还必须通过使用序列、选择和迭代结构来考虑所有可能的情况 以下是我目前的代码: 让calcOrder=()=>
quaty
大于3时,我正在努力理解实现结果的逻辑:
用于计算促销期间将购买的比萨饼(如下所列)价格的应用程序。比萨饼的数量将由用户输入
- 一个大比萨饼要花6.45美元
- 两个大比萨饼要12美元
- 三个大比萨饼要14美元
- 四家或四家以上的比萨饼将采用上述价格的组合,以确保为客户提供最佳价格。例如,五个比萨的最佳价格是两个比萨(12.00美元)+三个比萨(14.00美元)
让calcOrder=()=>{
//获取输入
变量数量=document.getElementById(“数量”).value;
var价格=6.45;
var价格2=12.0;
var价格3=14.0;
var总价格;
//验证缺失、非数字、负输入
如果(数量=“”){
document.getElementById(“message”).innerHTML=“缺少输入”;
}否则如果(isNaN(数量)){
document.getElementById(“message”).innerHTML=“仅限数字”;
}否则如果(数量<0){
document.getElementById(“消息”).innerHTML=
“不允许使用负数”;
}否则{
//计算总数
如果(数量=1)
{
总价=价格;
}
否则如果(数量=2)
{
总价格=价格2;
}
否则如果(数量=3)
{
总价格=价格3;
}
//总产量
document.getElementById(“消息”).innerHTML=
`总价为$${totalPrice}`;
}
//阻止表格提交
返回false;
};
谢谢您可以使用除法和模运算来计算价格: (本例假设您所做的所有检查有效输入都已完成)
const qte=document.getElementById(“数量”).value;
常数价格=6.45;
常数价格2=12.0;
常数价格3=14.0;
让总价格;
const total3=parseInt(“+qte/3+”,10)*price3;
const total2=parseInt(“+(qte%3)/2+”,10)*price2;
const total1=parseInt(“+((qte%3)%2)+”,10)*价格;
totalPrice=total1+total2+total3;
document.getElementById(“消息”).innerHTML=
`总价为$${totalPrice}`;
代码中实际发生的情况
这是基础数学,如果你想知道你的数字中有多少个3除以3,然后取结果的整数部分或下限,基本除法。例如,10=3*3+1,那么除法的结果是3。
因为你只想把3个比萨饼的价格作为首要任务,你做这个除法,然后乘以3的价格
然后是2个比萨的价格优先权,但你对比萨的总数不感兴趣,只对你支付了3个比萨的价格后剩下的部分感兴趣,所以你使用mod运算符(%)计算3个比萨的价格,但没有支付,例如8=3*2+2,这给了我们2个比萨没有支付,所以你应用了2个比萨的价格
您检查在您支付了2个比萨后是否还剩下一个比萨(只有在您支付了3个比萨后只剩下一个比萨时才会发生这种情况)。如果有一个比萨饼,你就要付钱,否则你什么也不加
注:在以三个的倍数购买比萨后,你只需加上两个比萨或一个比萨的价格,但不能同时加上两个,否则将使用三个比萨的价格
希望解释清楚,如果不留下评论,我将尝试调整不清楚的内容。为什么在每次计算的开始和结束时都有
“
parseInt(qte/3,10)
可以正常工作。或者更具描述性的Math.floor(qte/3)
。Math.floor也可以工作,但parseInt需要字符串作为参数。@如果传递非字符串toString()
,则会调用chawkichalladiaparseInt({toString:()=>“42”},10)/=>42
let calcOrder = () => {
// get inputs
var qty = document.getElementById("quantity").value;
var price = 6.45;
var price2 = 12.0;
var price3 = 14.0;
var totalPrice;
// validate missing, non-digit, negative inputs
if (qty == "") {
document.getElementById("message").innerHTML = "Missing input";
} else if (isNaN(qty)) {
document.getElementById("message").innerHTML = "Numbers only";
} else if (qty < 0) {
document.getElementById("message").innerHTML =
"Negative numbers are not allowed";
} else {
//calc total
if (qty == 1)
{
totalPrice = price;
}
else if (qty == 2)
{
totalPrice = price2;
}
else if (qty == 3)
{
totalPrice = price3;
}
//output total
document.getElementById("message").innerHTML =
`Total price is $${totalPrice}`;
}
// prevent form from submission
return false;
};