我正在尝试创建一个简单的计算器,该计算器将退还营业税额和税后额。如果我输入$ 80,而营业税为7.5%,我应该取回$ 86,但我却要退回$ 806。我不确定为什么。
//calculation
var total = (itemCost + (itemCost * salesTax/100));
total = Math.round(total)
答案 0 :(得分:3)
您需要var total = (parseInt(itemCost) + (parseInt(itemCost) * salesTax/100));
答案 1 :(得分:2)
问题是,当您检索值时,它是一个字符串。通过执行以下操作将其解析为数字值:
var salesTax = Number(document.getElementById("salesTax").value);
答案 2 :(得分:1)
获取文本字段的值时,您具有字符串。 JavaScript进行了很多类型推断,因此它几乎可以工作。您的表情会翻译为:
(String)“ 80” +((String)“ 80” *(int)0.075)
(String)“ 80” +(int)6
现在调用String运算符+(String,Any),它被定义为字符串连接。因此,您最终得到“ 80” +“ 6” =>“ 806”。
例如,如果您会写: “ 80” *“ 1” +“ 80” *“ 7.5” /“ 100”,您的确会得到86的预期结果。
但是要确保一切正常,您确实应该将值从字符串值解析为数字值(使用parseInt或parseFloat)。