在 Groovy 3.0 中(Groovy 版本:3.0.0-rc-1 JVM:11.0.2)
println 3**3**3
println 3.0**3.0**3.0
给出
19683
19683
在终端的 Python (Python 3.5.2) 中,我得到
>>> 3**3**3
7625597484987
>>> (3**3)**3
19683
official site没有给出任何指示。
目前 Groovy 中的 ** 是否已损坏?
编辑
答案 stackoverflow , math.stackexchange明确数学约定是求幂是右结合的。
缺陷是defined作为软件产品中不满足软件需求(如需求规范中所述)或最终用户期望(可能未指定但合理)的条件。
由于这种合理的期望以未记录的方式被违反,这难道不被视为一个错误吗?
最佳答案
不,它没有坏
与所有其他运算符一样,它仅具有从左到右的关联性
在 python 中 **
具有从右到左的关联性,因此也不会被破坏
他们只是有不同的规则
关于groovy - Groovy 幂运算符 (**) 的结合性是否被破坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59499134/