返回错误值的Javascript计算器

返回错误值的Javascript计算器,javascript,Javascript,我是javascript新手,所以我可能犯了一个非常简单的错误,但基本上是我试图用javascript制作一个小型价格计算器,它可以工作,但问题是它返回的数字高得离谱 我已经做了很多搜索,但我找不到答案,我试着避免浮点数和除法,就像我现在做的那样,因为它让我更接近我认为正确的数字。我已经尝试过使用.toFixed在我的代码中添加更多的内容,看看这些是否是导致我运气不好的原因。现在,如果你试着用300张彩色名片做对比,单面的可能会说是“100.0614.29英镑”。我得到这个数字的唯一方法是再加上

我是javascript新手,所以我可能犯了一个非常简单的错误,但基本上是我试图用javascript制作一个小型价格计算器,它可以工作,但问题是它返回的数字高得离谱

我已经做了很多搜索,但我找不到答案,我试着避免浮点数和除法,就像我现在做的那样,因为它让我更接近我认为正确的数字。我已经尝试过使用.toFixed在我的代码中添加更多的内容,看看这些是否是导致我运气不好的原因。现在,如果你试着用300张彩色名片做对比,单面的可能会说是“100.0614.29英镑”。我得到这个数字的唯一方法是再加上一个愚蠢的零

var click = (amount / 3) / 1000;

if (color === "color") {
  click = (amount / 5) / 1000;
};
在这里

但这只会使它下降到1000伊什,如果我删除点击费,它仍然是1000伊什

编辑


我正在寻找一个解释,为什么我会得到这些结果,并帮助得到答案,使它像我认为应该的那样工作。如果有足够的时间和睡眠,我想我可以解决这个问题,我只是不明白为什么会发生这种情况。

算术运算中的类型转换是按照运算的执行顺序进行的。在表达式中,所有内容都转换为串联的字符串

var rip = 11;
var click = 22;
var type = 33.44;

return "£" + rip + click + type.toFixed(2);

= "£112233.44"

return "£" + (rip + click + type).toFixed(2);

= "£66.44"

嗨,你的代码有点变了。 首先,我在划分“作业”数量时添加了一个复选框。假设你可以在一个页面上放置4个“作业”,那么当顺序为7个“作业”时,你需要数到两页而不是一页(就像你的脚本中那样)

但最后,您需要做的就是设置价格(对于黑白页面)和价格颜色(对于彩色页面)

var type=prompt(“它是什么类型的作业?”).toLowerCase();
console.log(类型);
var amount=提示(“您想要多少?”;
console.log(parseInt(amount));
如果(类型==“名片”| |类型==“公交卡”| |类型==“公交卡”){
金额=(金额%21)>0?(金额/21)+1:金额/21;
console.log(parseInt(amount));
}否则如果(类型==“传单”| |类型==“传单”| |类型==“a5”){
金额=(金额%4)>0?(金额/4)+1:金额/4;
console.log(parseInt(amount));
}否则如果(类型==“信头”| |类型==“a4”){
金额=(金额%2)>0?(金额/2)+1:金额/2;
console.log(parseInt(amount));
};
var color=prompt(“黑白还是彩色?”).toLowerCase();
控制台。日志(颜色);
var side=prompt(“是单面还是双面?”).toLowerCase();
控制台日志(侧面);
var价格=10;
var-priceColor=15;
如果(侧面=“双面”){
价格=价格*2;
priceColor=priceColor*2;
};
如果(颜色=“颜色”){
价格=价格颜色;
};
函数add(){
返回“£”+(价格*金额);
};

log(add())
我可以看到一个错误
if(side==“double-side”){rip==20;}
必须是
rip=20
@dfsq我实际上在自己的文件中更改了它,在我开始键入这个之后,我没有意识到我没有在这里更改它。