【问题标题】:Why is -2**2 == -4 but math.pow(-2, 2) == 4.0?为什么 -2**2 == -4 但 math.pow(-2, 2) == 4.0?
【发布时间】:2018-02-05 05:35:12
【问题描述】:

为什么这两个语句不等价?

>> math.pow(-2,2)
4.0
>> -2 ** 2
-4

Python 3.5.3(默认,2017 年 1 月 19 日,14:11:04)

【问题讨论】:

  • 答案在这里:docs.python.org/3.5/reference/…** 的优先级高于一元否定 -。此外,** 是右结合的。在实践中,右关联性意味着,例如,a**b**c = a**(b**c)

标签: python python-3.x math operators


【解决方案1】:

运算符的执行顺序(运算符优先级)在这里很重要:-2**2,首先执行 2 的 2 次幂,然后执行负号。

使用括号获得想要的结果

(-2)**2 = 4

【讨论】:

    【解决方案2】:

    您可以从the Python3 documentation查看优先级。

    -2**2

    计算为:-(2**2) = -4

    【讨论】:

      【解决方案3】:

      因为'-'的优先级在'**'的优先级之后,所以先用(-2)**2计算-2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-08
        • 2019-09-26
        • 1970-01-01
        • 2010-12-16
        相关资源
        最近更新 更多