Math.pow with negative numbers and non-integer powers

后端 未结 2 1916
予麋鹿
予麋鹿 2020-12-10 05:02

The ECMAScript specification for Math.pow has the following peculiar rule:

  • If x < 0 and x is finite and y is finite and y is n
相关标签:
2条回答
  • 2020-12-10 05:51

    You can use a helper function.

    In swift I faced a similar situation. Here is a proposed solution for you:

    function checkSquareRoot(x, y) {
        if (x > 0) {
            return Math.pow(x, y)
        }
        return -1 * Math.pow(-x, y)
    }
    
    0 讨论(0)
  • 2020-12-10 05:55

    I assume because those circumstances lead the result into complex waters, and ECMAScript is not equipped with imaginary numbers. Specifically, your example should result in something close to 1 + 1.732i, among other results. (The fact that -2 is also a possible result is besides the point - it is an accident rather than a rule.)

    0 讨论(0)
提交回复
热议问题