【问题标题】:Negative Number to Non-Integer Power in JavascriptJavascript 中非整数幂的负数
【发布时间】:2012-02-10 07:52:33
【问题描述】:

我正在编写一个必须在某一时刻执行类似操作的脚本:Math.pow(-2,1.5)。结果应该大约是 -2.82843,但 Javascript 会返回 NaN。 (我在 Google Chrome 17 和 Mozilla Firefox 11 中都尝试过。)如果指数是整数,例如 Math.pow(-2,3),那么 Javascript 将返回正确的答案,在这种情况下为 -8。正数也正确地提升到非整数幂; Math.pow(2,1.5) 的计算结果约为 2.8284271247461903。有什么方法可以让 Javascript 计算负数到非整数幂的值?

【问题讨论】:

    标签: javascript math nan exponent


    【解决方案1】:

    Math.pow(-2, 1.5) 返回 NaN,因为没有实数等于 -2 的 1.5 次方。此属性有一个复数,但Math.pow() 不使用复数进行计算。

    这个简单的转换证明了这种情况:

    (-2)1.5 = (-2)1 * (-2)0.5 = (-2) * sqrt(- 2) = (-2) * i * sqrt(2) = -2i * sqrt(2)

    【讨论】:

    • 有没有一个库可以用来计算 Javascript 中的复数?
    • 另外,为什么我在计算器中输入-2^1.5,它会给出一个实数?
    • 嗯,使用一个原型和几个函数很容易实现(所需的公式在所有复杂分析的入门书籍中都有)。 Google search 出现this 和其他一些人。它们似乎缺少 pow() 或 sqrt() 之类的操作,但这些操作也相对容易用实际函数来表达(需要注意的是一些复杂函数的多值性,但您通常可以选择最方便的值)。
    • -2^1.5 与 Math.pow(-2, 1.5) 不同。后者是 (-2)^1.5。 -2^1.5 的 JavaScript 表达式是 -Math.pow(2, 1.5),它不会返回 NaN。
    • 哦,哎呀。我应该知道的。我从来没有在数学课上犯过这个错误,但我只是在数学课外犯了这个错误。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多