【问题标题】:Math.exp not working as expected in JavascriptMath.exp 在 Javascript 中无法按预期工作
【发布时间】:2018-02-08 19:28:22
【问题描述】:

我正在尝试让这个公式在 javascript 中工作:

99 * exp(-0.0065 * (28 - 变量)2)

我需要返回的数字是整数。这就是我所拥有的:

Math.round(99*(Math.exp(-0.0065*((28-variable)^2))))

如果变量是 28,我期望结果为 99,但我得到 98。当变量为 18 时,我期望结果为 52;我得到 94。当变量为 8 时,我期望 7 但得到 86。

我的变量只会是从 -2 到 28 的整数。

我可能把括号放在错误的地方或什么地方,但我就是看不出我做错了什么。

【问题讨论】:

  • 公式中的^2 真的是按位异或吗...?我知道它通常用于表示“2 的幂”,在这种情况下你实际上想要使用 Math.pow()
  • @Cbroe 是的 ^2 是我错误地认为这意味着 2 的幂!感谢您的澄清。

标签: javascript math formula


【解决方案1】:

^ 在 javascript 中是按位异或运算符,而不是指数。

您正在寻找Math.pow**(ES7 - 将前者用于浏览器):

Math.round(99 * Math.exp(-0.0065 * (28-variable) ** 2))

现在让我们将其拉入一个函数并使用您的预期输出对其进行测试:

const fn = n =>
  Math.round(99 * Math.exp(-0.0065 * (28-n) ** 2))

console.log(fn(28))
console.log(fn(18))

【讨论】:

  • 谢谢。就是这样!
【解决方案2】:
Math.round(99 * Math.exp(-0.0065 * Math.pow(28-variable, 2)))

试试这个。 ^ 是按位异或。 Math.pow 是你要找的函数。

【讨论】:

  • @PatrickRoberts 道歉我复制并粘贴了 OP 的代码并添加了 Math.pow。
【解决方案3】:

使用Math.pow 而不是^

Math.round(99 * Math.exp(-0.0065 * Math.pow(28 - variable, 2)))

更多信息表达式和运算符,请查看this link

【讨论】:

    【解决方案4】:

    ^ 用于异或运算,您需要使用Math.pow 代替

    Math.round(99*(Math.exp(-0.0065*(Math.pow((28-variable),2)))))
    

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 2019-09-17
      • 2017-03-25
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 2021-09-12
      相关资源
      最近更新 更多