【发布时间】:2020-04-17 07:53:11
【问题描述】:
在 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 作为软件产品中的一个条件,它不满足软件需求(如需求规范中所述)或最终用户期望(可能未指定但合理)。
由于这种合理的预期以一种未记录的方式被违反,这不被认为是一个错误吗?
【问题讨论】:
-
如果您使用来自rosettacode.org/wiki/Exponentiation_order (5,3,2) 的相同示例,这个问题将更加有用
标签: groovy exponentiation