【问题标题】:What is wrong with my simple math equation我的简单数学方程式有什么问题
【发布时间】:2019-07-04 19:19:19
【问题描述】:

我正在尝试创建一个简单的计算器,它将返回销售税金额加上税后金额。如果我输入 80 美元并且销售税为 7.5%,我应该得到 86 美元的金额,但我得到的却是 806 美元退还给我。我不确定为什么。

    //calculation
    var total = (itemCost + (itemCost * salesTax/100));


    total = Math.round(total) 

【问题讨论】:

  • itemCostsalesTax 是字符串。

标签: javascript html math


【解决方案1】:

问题是当您检索该值时,它是一个字符串。通过执行以下操作将其解析为数值:

var salesTax = Number(document.getElementById("salesTax").value);

【讨论】:

    【解决方案2】:

    当您获取文本字段的值时,您有字符串。 Javascript 做了很多类型推断,这就是它几乎可以工作的原因。你的表达被翻译成:

    (String)"80" + ((String)"80"*(int)0.075)

    (字符串)"80" + (int)6

    现在调用 String operator+(String, Any) ,定义为字符串连接。因此你最终得到“80”+“6”=>“806”。

    例如,如果您会写: "80" * "1" + "80" * "7.5"/"100" 你确实会得到 86 的预期结果。

    但要确保一切按预期工作,您确实应该将值从字符串值解析为数字值(使用 parseInt 和 parseFloat)。

    【讨论】:

      【解决方案3】:

      你需要var total = (parseInt(itemCost) + (parseInt(itemCost) * salesTax/100));

      【讨论】:

      • parseInt 是做什么的?
      • parseInt() 函数解析一个字符串并返回一个整数,如JavaScript parseInt() Function 所示。计算前需要将字符串转换为整数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多